oracle 存储过程,触发器遍历游标的三种方法
2014-10-08 21:43
519 查看
第一种:for循环v_tmp是变量无须指定(显示游标)
第二种:for循环v_tmp是变量无须指定(隐式游标)
第三种:v_tmp是变量须指定(FETCH用法)
DECLARE
CURSOR CUR IS SELECT * FROM TR_STUDENT_PARENT WHERE PARENT_ID = :NEW_VALUE.USER_ID;
V_TMP TR_STUDENT_PARENT%ROWTYPE;
BEGIN
OPEN CUR;
LOOP
FETCH CUR INTO V_TMP;
EXIT WHEN CUR%NOTFOUND;
SELECT STUDENT_NO INTO V_STUDENTNO FROM TU_STUDENT WHERE STUDENT_ID = V_TMP.STUDENT_ID;
INSERT INTO UNIPLATFORM_PARENT(SCHOOL, STUDENTNO, DN, PARENTNAME, RELATION, SPID, PARENTFLAG, PARENTID) VALUES(V_SCHOOLNAME, V_STUDENTNO, :NEW_VALUE.DN, :NEW_VALUE.USER_NAME, V_TMP.RELATION, V_SPID, 2, :NEW_VALUE.USER_ID);
END LOOP;
CLOSE CUR;
END;
DECLARE CURSOR CUR IS SELECT * FROM TR_STUDENT_PARENT WHERE PARENT_ID = :NEW_VALUE.USER_ID; BEGIN FOR V_TMP IN CUR LOOP SELECT STUDENT_NO INTO V_STUDENTNO FROM TU_STUDENT WHERE STUDENT_ID = V_TMP.STUDENT_ID; INSERT INTO UNIPLATFORM_PARENT(SCHOOL, STUDENTNO, DN, PARENTNAME, RELATION, SPID, PARENTFLAG, PARENTID) VALUES(V_SCHOOLNAME, V_STUDENTNO, :NEW_VALUE.DN, :NEW_VALUE.USER_NAME, V_TMP.RELATION, V_SPID, 2, :NEW_VALUE.USER_ID); END LOOP; END;
第二种:for循环v_tmp是变量无须指定(隐式游标)
DECLARE BEGIN FOR V_TMP IN (SELECT STUDENT_ID, RELATION FROM TR_STUDENT_PARENT WHERE PARENT_ID = :NEW_VALUE.USER_ID) LOOP SELECT STUDENT_NO INTO V_STUDENTNO FROM TU_STUDENT WHERE STUDENT_ID = CUR.STUDENT_ID; INSERT INTO UNIPLATFORM_PARENT(SCHOOL, STUDENTNO, DN, PARENTNAME, RELATION, SPID, PARENTFLAG, PARENTID) VALUES(V_SCHOOLNAME, V_STUDENTNO, :NEW_VALUE.DN, :NEW_VALUE.USER_NAME, CUR.RELATION, V_SPID, 2, :NEW_VALUE.USER_ID); END LOOP; END;
第三种:v_tmp是变量须指定(FETCH用法)
DECLARE
CURSOR CUR IS SELECT * FROM TR_STUDENT_PARENT WHERE PARENT_ID = :NEW_VALUE.USER_ID;
V_TMP TR_STUDENT_PARENT%ROWTYPE;
BEGIN
OPEN CUR;
LOOP
FETCH CUR INTO V_TMP;
EXIT WHEN CUR%NOTFOUND;
SELECT STUDENT_NO INTO V_STUDENTNO FROM TU_STUDENT WHERE STUDENT_ID = V_TMP.STUDENT_ID;
INSERT INTO UNIPLATFORM_PARENT(SCHOOL, STUDENTNO, DN, PARENTNAME, RELATION, SPID, PARENTFLAG, PARENTID) VALUES(V_SCHOOLNAME, V_STUDENTNO, :NEW_VALUE.DN, :NEW_VALUE.USER_NAME, V_TMP.RELATION, V_SPID, 2, :NEW_VALUE.USER_ID);
END LOOP;
CLOSE CUR;
END;
相关文章推荐
- Oracle查看表、存储过程、触发器、函数等对象定义语句的方法
- Oracle 查看 表 存储过程 触发器 函数 等对象定义语句的方法
- oracle中存储过程,存储函数,触发器,游标,索引,事务以及锁的概念,作用
- oracle(sql)基础篇系列(五)——PLSQL、游标、存储过程、触发器
- oracle学习总结5(游标、触发器、过程、方法)
- Oracle 查看 表 存储过程 触发器 函数 等对象定义语句的方法
- Oracle查看表、存储过程、触发器、函数等对象定义语句的方法 .
- Oracle查看表、存储过程、触发器、函数等对象定义语句的方法
- 利用游标返回结果集的的例子(Oracle 存储过程)JAVA调用方法和.NET调用方法
- 14.数据库oracle必学,其他最好了解一种以上(mysql,sql server,access==) oracle:视图,索引,存储过程,触发器,游标,包,常用函数
- Oracle 查看 表 存储过程 触发器 函数 等对象定义语句的方法
- Oracle 查看 表 存储过程 触发器 函数 等对象定义语句的方法
- oracle编程 if, for , while, loop, 存储过程,触发器,游标演示
- Oracle 查看 表 存储过程 触发器 函数 等对象定义语句的方法
- java 从零开始,学习笔记之基础入门<Oracle_函数_触发器_游标_存储过程_视图>(三十五)
- Oracle 查看 表 存储过程 触发器 函数 等对象定义语句的方法
- Oracle 查看 表 存储过程 触发器 函数 等对象定义语句的方法
- Oracle 查看 表 存储过程 触发器 函数 等对象定义语句的方法
- 使用游标、存储过程、pivot 三种方法导入数据
- oracle 存储过程两次遍历游标