PL/SQL简介
创建函数
创建过程
createor replace procedure syk_reg
is
begin
dbms_output.put_line('这是我的第一个有名字的存储过程');
end;
定义包头
--包头
CREATEOR REPLACE PACKAGE comm_package
IS
PROCEDUREp_jia(a NUMBER,b NUMBER);
ENDcomm_package;
--包体
CREATEOR REPLACE PACKAGE BODY comm_package
IS
PROCEDUREp_jia(a NUMBER,b NUMBER)
IS
BEGIN
dbms_output.put_line(a+b);
ENDp_jia;
ENDcomm_package;
--测试
DECLARE
BEGIN
COMM_PACKAGE.p_jia(1,1);
END;
输入输出参数
CREATEOR REPLACE PROCEDURE myOut(n1 NUMBER,n2 NUMBER)
AS
v_tempNUMBER
BEGIN
v_temp:=n1;
n2:=3*v_temp;
END;
DECLARE
my_varNUMBER:=1;
BEGIN
dbms_output.put_line('befor='||my_var);
MYOUT(3,my_var);
dbms_output.put_line('after='||my_var);
END;
创建一个用户并授与权限:
SQL>create user zhangsan identified by a123456;
用户已创建。
SQL>grant connect,resource,dba to zhangsan;
授权成功。
用zhangsan的名字登录:
SQL>conn zhangsan/a123456;
已连接。
SQL>show user;
USER 为"ZHANGSAN"
使用sqlplus.exe 用sqlplusw.exe 用sqlplus /nolog conn /assysdba;
在hibernate里调用存储过程
1.建立存储过程
createor replace procedure insertEmp
as
begin
insertinto my_Emp values(111,'zhangsan',111);
end;
2.在hibernate的实现类里调用存储过程来插入数据
SessionFactorysf=new Configuration().configure().buildSessionFactory();
Sessionsession=sf.openSession();
Transactiontrans=session.beginTransaction();
trans.begin();
//-----------------------------------------------------------
PreparedStatementpst=session.connection().prepareStatement("{call insertEmp}");
pst.execute();