私は次のようにシグネチャを持つ関数の束を持っている:EXECUTE IMMEDIATEを使用してレコードを取得する方法は?
FUNCTION func1 (par1 IN VARCHAR2, par2 IN NUMBER) RETURN my_rec;
と、私はこの関数の束からデータを取得するための機能があります。
FUNCTION get_result (func_name IN VARCHAR2, par1 IN VARCHAR2, par2 IN NUMBER) RETURN my_rec;
IS
rec1 my_rec;
BEGIN
EXECUTE IMMEDIATE 'SELECT ' || func_name || '(:par1, :par2) FROM DUAL'
INTO rec1
USING IN par1, IN par2;
RETURN rec1;
END;
をしかし、このコードは、ORA-01007「変数で失敗します選択リストには含まれていません。
声明を書き換えるにはどうすればよいですか?
オブジェクト型としてmy_recを定義しても動作しますが、my_recがパッケージのレコード型として定義されていると動作しません。理由は何ですか? – engro
@ negr-o、パッケージのレコード・タイプはPL/SQL内でのみ認識されますが、SQLでは使用できません。 – tuinstoel
2 tuinstoel:ありがとう! – engro