长春免费建网站,旅游区网站开发,滕州网站设计,网站建设验收报告范本一#xff0c;oracle存储过程语法 1.oracle存储过程结构 CREATE OR REPLACE PROCEDURE oracle存储过程名字 ( 参数1 IN NUMBER, 参数2 IN NUMBER ) IS 变量1 INTEGER :0; 变量2 DATE; BEGIN END oracle存储过程名字 2.无返回值的oracle存储过程 create or replac… 一oracle存储过程语法 1.oracle存储过程结构 CREATE OR REPLACE PROCEDURE oracle存储过程名字 ( 参数1 IN NUMBER, 参数2 IN NUMBER ) IS 变量1 INTEGER :0; 变量2 DATE; BEGIN END oracle存储过程名字 2.无返回值的oracle存储过程 create or replace procedure xs_proc_no is begin insert into xuesheng values (3, wangwu, 90, 90); commit; end xs_proc_no; 3.有单个数据值返回的oracle存储过程 create or replace procedure xs_proc(temp_name in varchar2, temp_num out number) is num_1 number; num_2 number; begin select yu_wen, shu_xue into num_1, num_2 from xuesheng where xing_ming temp_name; --dbms_output.put_line(num_1 num_2); temp_num : num_1 num_2; end; 其中以上两种与sql server基本类似而对于返回数据集时上述方法则不能满足我们的要求。在Oracle中一般使用ref cursor来返回数据集。示例代码如下 4.有返回值的oracle存储过程(列表返回) 首先建立我们自己的包。并定义包中的一个自定义ref cursor create or replace package mypackage as type my_cursor is ref cursor; end mypackage; 在定义了ref cursor后可以书写我们的程序代码 create or replace procedure xs_proc_list(shuxue in number, p_cursor out mypackage.my_cursor) is begin open p_cursor for select * from xuesheng where shu_xue shuxue; end xs_proc_list; 5.SELECT INTO STATEMENT 将select查询的结果存入到变量中可以同时将多个列存储多个变量中必须有一条 记录否则抛出异常(若没有记录则抛出NO_DATA_FOUND) 例子 BEGIN SELECT name,age into 变量1,变量2 FROM user where xxx; EXCEPTION WHEN NO_DATA_FOUND THEN xxxx; END; ... 6.IF 判断 IF V_TEST1 THEN BEGIN do something END; END IF; 7.WHILE 循环 WHILE V_TEST1 LOOP BEGIN XXXX END; END LOOP; 8.变量赋值 V_TEST : 123; 9.用FOR IN 使用cursor ... IS CURSOR cur IS SELECT * FROM xxx; BEGIN FOR cur_result in cur LOOP BEGIN V_SUM :cur_result.列名1cur_result.列名2 END; END LOOP; END; 10.带参数的CURSOR CURSOR C_USER(C_ID NUMBER) IS SELECT NAME FROM USER WHERE TYPEIDC_ID; OPEN C_USER(变量值); LOOP FETCH C_USER INTO V_NAME; EXIT FETCH C_USER%NOTFOUND; do something END LOOP; CLOSE C_USER; 11.用pl/sql developer debug 连接数据库后建立一个Test WINDOW 在窗口输入调用SP的代码,F9开始debug,CTRLN单步调试 二oracle存储过程的若干问题备忘 1.在oracle中表别名不能加as如 select a.name from user a;-- 正确 select a.name from user as a;-- 错误转载于:https://www.cnblogs.com/mr-hero/p/3489851.html