存储过程创建
- CREATE OR REPLACE PROCEDURE “存储过程名称”(参数1 IN VARCHAR2,参数2 IN VARCHAR2,参数3 OUT INTEGER) is
- PROCEDURE “存储过程名称”(参数1 IN VARCHAR2,参数2 IN VARCHAR2,参数3 OUT INTEGER) is
CREATE OR REPLACE PROCEDURE “存储过程名称”(参数1 IN VARCHAR2,参数2 IN VARCHAR2,参数3 OUT INTEGER) IS --定义变量 V_1 VARCHAR(100); --定义变量并赋值 V_2 VARCHAR(32767) : = '内容'; --定义变量 V_3 NUMBER(10); --定义变量并赋值 V_4 NUMBER(10):=0; --定义游标 TYPE CUR IS REF CURSOR; V_CHK_CUR CUR; --定义集合 TYPE CHK_REC IS RECORD( ROW_ID ROWID ,V5 NUMBER(1) ,V6 NUMBER(1) ,RESULT VARCHAR(100) ); TYPE CHK_LIST_T IS TABLE OF CHK_REC; CHK_LIST CHK_LIST_T; --定义游标 CURSOR CUR_V7 IS SELECT * FROM A; ROW_INDEX CUR_V7%ROWTYPE BEGIN --查询数据并用游标便利 代码块1开始 V_2 :=“SELECT ROW_ID ,V5,V6,RESULT FROM VIEW”; --查询有问题的数据 OPEN V_CHK_CUR FOR V_2 ;--打开游标,代码块2开始 LOOP FETCH V_CHK_CUR BULK COLLECT INTO CHK_LIST LIMT 1000;--循环遍历,一次取出1000条数据 EXIT WHEN CHK_LIST.COUNT =0;--如果没数据了,就退出循环。 FOR idx IN 1 .. CHK_LIST.COUNT LOOP --循环1000条数据 ,代码块3开始 CHK_LIST(idx).RESULT:=CHK_LIST(idx).RESULT || CASE CHK_LIST(idx).V5 WHEN 1 THEN '条件描述1' ELSE ‘条件描述2’ END; END LOOP;--循环1000条数据 ,代码块3结束 BEGIN--遍历更新到目标表 FORALL IDX IN 1.. CHK_LIST.COUNT UPDATE VIEW_A SET B = CHK_LIST(idx).RESULT WHERE ROWID = CHK_LIST(idx).ROW_ID; END;--遍历更新到目标表 END LOOP;--代码块2结束 --代码块1结束 END;
近期评论