oracle存储过程语句
2013-12-13 17:32
197 查看
1、创建一个a存储过程
2、if判断语句的使用
3、创建一个包mypackage,并自定义一个ref cursor游标my_cursor
4、列表返回于游标,游标是一个指针,指向oracle的私有的SQL区域,这个私有的SQL区域存储着查询select或者数据操纵语言(DML)语句像(INSERT\UPDATE\DELETE\OR MERGE)
5、使用for in 用cursor游标,遍历游标列表
6.while循环语句
7、带参数的cursor
create or replace procedure a (number1 in number ,number2 out number) 申明参数、参数类型、参数输入in\参数输出out is number3 number(2); 申明变量以及变量类型 begin number2 := number1; dbms_output.put_line(number2); 控制台输出值 end a;
2、if判断语句的使用
CREATE OR REPLACE PROCEDURE proc_if(credit IN NUMBER) IS str1 VARCHAR(300); Begin IF(1=2) THEN Begin str1:='SELECT * FROM cog_schedule cs WHERE cs.CREDIT>'||credit; dbms_output.put_line(str1); END; ELSE BEGIN str1:='SELECT * FROM cog_schedule cs WHERE cs.CREDIT<'||credit; dbms_output.put_line(str1); END; END IF; END proc_if;
注意:带参数的sql语句尽量拼接成字符串,不然很容易出诡异的错误, “||”拼接连接符
3、创建一个包mypackage,并自定义一个ref cursor游标my_cursor
create or replace package mypackage as type my_cursor is ref cursor; end mypackage;
4、列表返回于游标,游标是一个指针,指向oracle的私有的SQL区域,这个私有的SQL区域存储着查询select或者数据操纵语言(DML)语句像(INSERT\UPDATE\DELETE\OR MERGE)
CREATE OR REPLACE PROCEDURE C(number1 IN NUMBER,p_cursor OUT mypackage.my_cursor) IS BEGIN OPEN p_cursor FOR 打开游标 SELECT * FROM cog_schedule cs WHERE cs.credit > number1; END C;
5、使用for in 用cursor游标,遍历游标列表
CREATE OR REPLACE PROCEDURE B(number1 OUT NUMBER) (显式的游标for循环) IS v_sum NUMBER; CURSOR my_cursor IS SELECT * FROM cog_schedule; BEGIN FOR cur_result IN my_cursor LOOP BEGIN v_sum := cur_result.credit + cur_result.class_hour; number1 := v_sum; dbms_output.put_line(v_sum); END; END LOOP; END B;
6.while循环语句
CREATE OR REPLACE PROCEDURE B(number1 IN NUMBER,number2 OUT NUMBER) IS number3 NUMBER; BEGIN number3 := 0; 初始化变量 WHILE (number3 < number1) LOOP BEGIN number2 := number1; NUMBER3 := NUMBER3 + 1 ; dbms_output.put_line(number2); END; END LOOP; END B;
7、带参数的cursor
CREATE OR REPLACE PROCEDURE A(number1 IN NUMBER) IS CURSOR p_cursor(cred NUMBER) IS SELECT * FROM cog_schedule cs WHERE cs.credit = cred; number2 cog_schedule%ROWTYPE; BEGIN OPEN p_cursor(number1); LOOP FETCH p_cursor INTO number2; EXIT WHEN p_cursor%NOTFOUND; dbms_output.put_line(number2.name); END LOOP; CLOSE p_cursor; END A;
相关文章推荐
- PL/SQL语句块基本语法(ORACLE存储过程,函数,包,游标) (转)
- ORACLE-Kill 杀死正在执行的Oracle存储过程和死锁语句
- ORACLE-Kill 杀死正在执行的Oracle存储过程和死锁语句
- oracle存储过程里的ifelse语句这样写,想想也是醉了
- oracle存储过程动态语句
- Oracle存储过程使用DML语句问题
- ORACLE-Kill 杀死正在执行的Oracle存储过程和死锁语句
- ORACLE-Kill 杀死正在执行的Oracle存储过程和死锁语句
- oracle存储过程,字符串sql语句执行与update返回值 示例
- oracle存储过程例子及其他语句[1]
- 如何在oracle存储过程中使用 create,drop 等不能"回滚" 的语句
- Oracle存储过程排查语句
- oracle存储过程处理ddl与dml语句
- 关于JAVA调用ORACLE存储过程时,传入动态参数作为in语句条件的问题
- Oracle带参数的sql语句脚本 转 Oracle存储过程 ---Python实现
- 工作总结24 Windows的任务计划,定时执行oracle存储过程或语句块
- PL/SQL语句块基本语法(ORACLE存储过程,函数,包,游标)
- ORACLE-Kill 杀死正在执行的Oracle存储过程和死锁语句
- ORACLE存储过程 练习系列六 关键字 分页查询某个方案下的建表语句
- 关于JAVA调用ORACLE存储过程时,传入动态参数作为in语句条件的问题