0
我的问题是非常基本的,但我完全是存储过程的新手,需要快速解决。任何帮助将不胜感激,Oracle存储过程
下面是当前的存储过程,我们有,
PROCEDURE get_something(
type IN VARCHAR2,
value IN VARCHAR2,
i_type OUT VARCHAR2,
i_id OUT VARCHAR2)
AS
TYPE t_array
IS
TABLE OF VARCHAR2(320);
identifers t_array;
column_name VARCHAR2(32);
info_qry VARCHAR2(500);
top_row_qry VARCHAR2(500);
BEGIN
identifers := t_array('ABC');
column_name := get_column_name(type);
info_qry := 'select INS.i_id, INS.model from table1 INS where INS.'||column_name||'='''||value||''' order by INS.version desc';
top_row_qry := 'select * from ('||info_qry||') where rownum<=1';
EXECUTE immediate top_row_qry INTO i_id, i_type;
EXCEPTION
WHEN OTHERS THEN
i_id := NULL;
i_type := NULL;
END get_something;
现在,当我执行这个程序,它给了我一个记录由于ROWNUM条件。
我的要求是从top_row_qry中删除rownum,所以结果会是多行。
我想将每个字段存储到某个变量中,我将使用其中一个变量在过程本身中进行一些比较。
所以基本上我想存储的结果,我可以稍后循环,并与值列表进行比较。
此外,我需要在此过程本身中定义值的列表。
类似下面:
list_of_vals:= t_array('ABC','XYZ');
任何人都可以帮助我在此。
https://www.techonthenet.com/oracle/loops/cursor_for.php – OldProgrammer
是由OldProgrammer提到 - 该解决方案是,当一个以上的行是在PL/SQL – Pat
被操纵使用游标使用'bulk collect'进行收集 –