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'進行收集 –