游标的使用方式相当之多,可以作为参数返回,也可以在存储过程内部使用当做局部的变量,存储过程里面使用的时候也是多种多样,这里记录一下最简单的一种使用方式,如下所示:
DECLARE
--类型定义
CURSOR C_CUST_INFO IS
SELECT
A.BUREAU_NO,
B.YHBH AS YHBH,
B.YHMC AS YHMC,
B.YDDZ AS YDDZ,
B.CBQDBH AS CBQDBH,
B.YHMC AS YHMC2,
B.LXDH AS LXDH
FROM YX_READING_TASK A , YX_READING_TASK_DATA B
WHERE A.TASKID = B.TASKID
ORDER BY B.YHBH;
--定义一个游标变量
C_ROW C_CUST_INFO%ROWTYPE;
--V_CUST_ID VARCHAR2(32);
BEGIN
FOR C_ROW IN C_CUST_INFO LOOP
INSERT INTO CUST_INFO
(
BUREAU_NO,
CUST_ID,
CUST_NAME,
CUST_ADDR,POWERZONE,LINK_MAN,LINK_PHONE
)VALUES(
C_ROW.BUREAU_NO,
C_ROW.YHBH,
C_ROW.YHMC,
C_ROW.YDDZ,
C_ROW.CBQDBH,
C_ROW.YHMC2,
C_ROW.LXDH
);
--V_CUST_ID := C_ROW.YHBH;
END LOOP;
END;
注意游标的select语句里面不能有相同列名,要不然会报错,可以用别名来处理相同列名。在declare块里面可以定义很多变量,然后在loop里面可以使用,这样就能够处理很多复杂的业务逻辑了。