oracle存储过程


每个记录都是一次成长。


--=====================================================================================
--◇◆存储过程---示例:


--◇◆select存储过程-
create or replace procedure proc_select(test_cursor out sys_refcursor)
as
begin
 open test_cursor for select * from [用户].[表名];
 dbms_output.put_line('select success!!!');
end proc_select;



----------------------------------------------------------------------------------
--调用
declare
 str sys_refcursor;
 rowinfo [用户].[表名]%rowtype;
begin
 proc_select(str);
 loop
fetch str into rowinfo;
exit when str%notfound;
dbms_output.put_line(rowinfo.[字段]);
 end loop;
end;


◇◆◇◆◇◆◇◆---------------------------------包--------示例--------------------------------------◇◆◇◆◇◆◇◆
--创建包
create or replace package cglin_package
as
  procedure show99;--声明包里的过程
  --其他过程
end cglin_package;




--实现包
create or replace package body cglin_package
as
  procedure show99--创建过程
is
begin
 for i in 1..9 loop
for j in 1..i loop
 dbms_output.put(i*j||'  ');
end loop;
dbms_output.new_line();
 end loop;
end;

--下一个过程
end cglin_package;




--调用
begin
 cglin_package.show99;
end;




◇◆◇◆◇◆◇◆---------------------------------------------------------------------------------------◇◆◇◆◇◆◇◆
◇◆◇◆◇◆◇◆---------------------------------------------------------------------------------------◇◆◇◆◇◆◇◆
◇◆◇◆◇◆◇◆---------------------------------------------------------------------------------------◇◆◇◆◇◆◇◆
◇◆◇◆◇◆◇◆---------------------------------------------------------------------------------------◇◆◇◆◇◆◇◆
◇◆◇◆◇◆◇◆---------------------------------------------------------------------------------------◇◆◇◆◇◆◇◆






◇◆◇◆◇◆◇◆-----------------------------------------◇◆◇◆◇◆◇◆----------------------------------------------◇◆◇◆◇◆◇◆
create or replace procedure proc_delete(strid in int,delresult out varchar2)
       as
       begin
          delete from table1 where tid = strid;
          delresult := SQL%rowcount;
          
           commit;
       end proc_delete;
◇◆◇◆◇◆◇◆---------------------------------------------------------------------------------------◇◆◇◆◇◆◇◆
create or replace procedure proc_delete(strid in 表名.字段%type,delresult out varchar2)
       as
       begin
          delete from 表名 where 字段 = strid;
          delresult := SQL%rowcount;
          
           commit;
       end proc_delete;
◇◆◇◆◇◆◇◆------------------------------【plsql调用】--------------------------------◇◆◇◆◇◆◇◆
declare
 rstr varchar2(20);
begin
 proc_delete(参数,rstr);
 dbms_output.put_line('results:'||rstr);
end;


◇◆◇◆◇◆◇◆------------------------------【java 调用】--------------------------------◇◆◇◆◇◆◇◆
public class Testjdbc {


public void procDelete(int id){
try {

Class.forName("oracle.jdbc.driver.OracleDriver");

Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl","test1_user","user123");

CallableStatement callpstmt = conn.prepareCall("{call proc_delete(?,?)}");

callpstmt.setInt(1, id);

callpstmt.registerOutParameter(2, Types.VARCHAR);

callpstmt.execute();

String result = callpstmt.getString(2);

System.out.println(result);

callpstmt.close();

conn.close();
} catch (Exception e) {

e.printStackTrace();
}
}  

public static void main(String[] args) {
new Testjdbc().procDelete(30);
}
 

}
◇◆◇◆◇◆◇◆-----------------------------------------◇◆◇◆◇◆◇◆----------------------------------------------◇◆◇◆◇◆◇◆





你可能感兴趣的:(oracle,存储过程)