2017-10-26 4 views
0

私はprocedure Aを持っています。これはパラメータとしてselect文をとりますが、私はselectを動的にします。パラメータとしてOracle Plsqlの動的選択

Proc A (query); 


Proc B is 
Declare 
-- try 1 using variables 
q varchar2(200):= 'select xy from table where col =' || var ; 

-- try 2 using bind 
q varchar2(200):= 'select xy from table where col = :v' ; 

Begin 

-- here i want to be able to define a variable based on certain conditions and my string q will take the variable. 

A(q); 

End; 

これは可能ですか? 誰かが助けてくれますか?

+0

このページの右下にある[関連]セクションをご覧ください。あなたはあなたに役立つ多くのそのような答えを見つけるでしょう。 –

答えて

1
CREATE OR REPLACE PROCEDURE Proc_A (in_query varchar) 
IS 
BEGIN 
    execute immediate in_query; 
END; 
/

CREATE OR REPLACE PROCEDURE Proc_B 
IS 
    col_val varchar2(60) := 'Lady Gaga'; 
    q varchar2(200):= 'select * from test_table where char_col =''' || col_val || ''''; 
Begin 
    Proc_A(q); 
End; 
/

begin 
    Proc_B; 
end; 

明らかに、結果セットを選択する必要があります。 DML(挿入/削除/ ...)は説明どおりに動作します。

関連する問題