我使用光标的语句:动态游标
SELECT NAME FROM STUDENT WHERE ROLL = 1;
我用:
CURSOR C IS SELECT NAME FROM STUDENT WHERE ROLL = roll;
--roll is a variable I receive via a procedure, and the procedure works fine for the received parameter.
在执行这一点,我能够与卷= 1
检索所有记录现在,我需要检索组(可能通过光标)的记录,就像:
SELECT NAME FROM STUDENT WHERE ROLL IN (2, 4, 6);
但IN子句中的值仅在运行时间处已知。我应该怎么做?也就是说,有没有什么办法可以给游标的子句分配参数WHERE?
我试过在游标声明中使用数组,但是弹出一个错误告诉类似于:标准类型不能使用。
我使用:
CURSOR C IS SELECT NAME FROM STUDENT WHERE ROLL IN (rolls);
--rolls is an array initialized with the required roll numbers.
你能给我们看光标吗? – Arion 2012-04-15 13:58:35
@Arion:完成。编辑了我的问题。 – user980411 2012-04-15 14:01:22
我相信这样做的正确方法是创建一个过程,其结果是[ref-cursor](http://stackoverflow.com/questions/1170548/get-resultset-from-oracle-stored-程序)。在执行该游标的过程中,调用输出引用游标的第二个过程。通过这种方式,您可以将参数传递给您调用的过程,从而允许您在运行时分配动态参数,同时避免使用可能允许进行SQL注入的动态SQL。 – xQbert 2012-04-15 14:49:17