动态生成游标查询

时间:2014-11-16 19:04:02

标签: database oracle plsql

我想基于同一脚本中使用的几个pl-sql变量动态生成游标查询。考虑一个例子

1. DECLARE
2.     emp_id number(12);
3.     CURSOR empList_cur is select emp_id from employee;
4.     
5. BEGIN
6.      LOOP
7.         FETCH empList_cur Into emp_id ;
8.         EXIT WHEN customerList_cur%NOTFOUND;
9.         CURSOR activityList_cur is (select empDetails from empDet where empNo=:emp_id)
10.     END LOOP;
11. END;

我想使用从一个游标检索到的emp_id的值到其他sql查询中,如上面代码片段中的第9行所示。

如果正确的语法相同怎么办?

提前致谢

1 个答案:

答案 0 :(得分:0)

您的查询只是动态接受值,而不是动态SQL本身。

DECLARE
    l_emp_id number(12); /* Don't use the column name itself as variable name */
    CURSOR empList_cur is select emp_id from employee;

BEGIN
     LOOP
        FETCH empList_cur Into l_emp_id ;
        EXIT WHEN customerList_cur%NOTFOUND;
        FOR I IN (select empDetails from empDet where empNo=l_emp_id)
        LOOP
           /* you can simply use the variable here , 
             and using a Cursor here is not efficient */
        -- Other statements
        END LOOP;
     END LOOP;
 END;