-
还是不错的查看全部
-
用create procedure命令建立存储过程和存储函数。语法:create [or replace] procedure 过程名(参数列表) as PLSQL 子程序体;查看全部
-
存储在数据库中供所有用户程序调用的子程序叫存储过程、存储函数.存储过程和存储函数相同点是:完成特定功能的程序。区别:是否用return语句返回值查看全部
-
手机运行慕课网有问题,求帮助!查看全部
-
存储过程调用方式:
1、exec pro_name();
2、 begin
pro_name();
end;
/
查看全部 -
存储过程不能通过return返回值,存储函数可以查看全部
-
创建和使用带参数的存储过程
举例:为指定员工,涨100块钱的工资;并且打印涨前和涨后的薪水。
注意:存储过程和存储函数的参数需要标明该参数是输入参数还是输出参数。这里需要的是输入参数,也就是需要输入员工号。
注意:这里已经对数据库记录做出了更改,一般不在存储过程中提交事物,因为这样不能保证在调用存储过程的代码在一个事物中。也就是哪里调用存储过程,哪里提交事物。
证明:oracle中执行完插入,需要commit,否则查看不到。这是oracle数据库的隔离级别导致的。
带参数存储过程创建:
带参数存储过程调用:像如图中这种情况,就可以保证这两个操作在同一事物中。
注意:存储过程的参数声明时,只能声明类型,不可以指定长度。
查看全部 -
1.Sqlplus 用户名/密码@IP地址:1521/orcl 2.host cls :进入sql编辑界面 3.存储过程是对象,表、试图、索引、序列、同义词等都是对象 4.语法:create or replace procedure 名称 as begin dbms_output.put_line(“Hello world!”) end;/ 4.两种执行函数或者过程的方式: 「1」exe 存储过程/函数(); 「2」begin 存储过程名/函数() end;/ 5.存储过程和存储函数的区别: 函数:可以return 过程:不可以return查看全部
-
package demo.utils;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class JDBCUtils {
private static String driver = "oracle.jdbc.OracleDriver";
private static String url = "jdbc:oracle:thin:@localhost:1521:orcl";
private static String user = "scott";
private static String password = "tiger";
static {
try {
Class.forName(driver);
} catch (ClassNotFoundException e) {
throw new ExceptionInInitializerError(e);
}
}
public static Connection getConnection() {
try {
return DriverManager.getConnection(url,user,password);
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
public static void release(Connection conn,Statement st,ResultSet rs) {
if(rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}finally {
rs = null;
}
}
if(st != null) {
try {
st.close();
} catch (SQLException e) {
e.printStackTrace();
}finally {
st = null;
}
}
if(conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}finally {
conn = null;
}
}
}
}
查看全部 -
包头:声明的所有方法,包括存储函数、存储方法
CREATE OR REPLACE PACKAGE MYPACKAGE AS
type empcursor is ref cursor;
procedure queryEmpList(dno in number,empList out empcursor); END MYPACKAGE;
包体(需要实现包头中声明的所有方法,包括存储函数、存储方法):
CREATE OR REPLACE PACKAGE BODY MYPACKAGE AS
procedure queryEmpList(dno in number,empList out empcursor) AS
BEGIN
open empList for select * from emp where deptno=dno;
END queryEmpList;
END MYPACKAGE;
-- 使用desc查看程序包的结构
desc MYPACKAGE
查看全部 -
1) 函数的定义 函数(Function)为一个命名的存储程序,可带参数,并返回一个计算值。函数和过程的结构类似,但必须有return 子句,用于返回函数值。
2) 存储函数必须使用return
3) 如果一个表达式中含有空值,那么这个表达式就是空值,所以要用到NVL(comm,0)域空函数
注意:在执行语法的过程中,如果有字段的值出现为空,需要用置空函数把转为0,再计算 nvl(传入参数,0)
create or replace FUNCTION 函数名字
return 返回值
AS
plsql块
查看全部 -
--创建一个带参数的存储过程: --给指定的员工涨100块钱的工资,并且打印涨前和涨后的薪水 /* 如何调用 begin raisesalary(7839); raisesalary(7566); commit; end; / */ create or replace procedure raisesalary(eno in number) as --定义一个变量保存涨前的薪水 psal emp.sal%type; begin --得到员工涨前的薪水 select sal into psal from emp where empno=eno; --给员工涨100元 update emp set sal=sal+100 where empno=eno; --打印 dbms_output.put_line('涨前:'||psal||' 涨后:'||(psal+100)); end; /
查看全部 -
一般不再存储过程或存储函数中提交或回滚(可以这么做但是通常不这样),而是在调用处做查看全部
-
CallableStatement这个接口中没有getCursor方法,那么如何获取查询到的list结果呢? 是OracleCallableStatement实现了这个接口并扩展了getCursor方法,所以要把现在的call强制转换为:OracleCallableStatement才能调用getCursor方法查看全部
-
--查询某个员工的年收入 create or replace function querymeth(emo in number) return number --返回年收入 as psal emp.sal%type; pcomm emp.comm%type; begin select sal , comm into psal,pcomm from emp where empno=emo; --直接返回年收入 return psal*12+nvl(pcomm,0);--nvl避免为空的时候,自动是0,避免报错 end; /查看全部
举报