運の悪いブール値を返す PL/SQL メソッドを動的に呼び出そうとしています。私は答えを探し回りましたが、これは不可能のようです。
これは私がやろうとしていることの非常に簡単な例です:
create or replace
function test_ret_bool return boolean as
begin
return true;
end test_ret_bool;
そして呼び出し:
declare
ret_val boolean;
sql_stmt varchar2(1000);
begin
sql_stmt := 'select test_ret_bool() from dual';
execute immediate sql_stmt into ret_val;
end;
これは機能せず、エラーが発生します:
ORA-06553: PLS-382: expression is of wrong type
また、sql_stmt を次のように変更してみました。
sql_stmt := 'begin :result := test_ret_bool(); end;';
execute immediate sql_stmt using out ret_val;
次にPL/SQLエンジンを起動しますが、次のエラーが発生します:
PLS-00457: expressions have to be of SQL types
同じ問題を説明し、おそらくラッパー関数を使用している他のスレッドを見てきました。私の状況ではラッパー関数を使用することはできません。
おそらくこれに dbms_sql.execute() を使用することについていくつかのアイデアを見てきましたが、うまくいきませんでした。
誰でもアドバイスできますか?dbms_sql.execute() を使用してこの作業の例を提供できますか?
どうもありがとう!