TOAD ORACLEを使用してDEFパッケージで定義されたSQL関数ABCを呼び出す方法

私は1つの文字列引数を受け入れるABCという名前の中に1つの関数を持つDEFというOracleパッケージを持っています。
TOADエディタでこの関数ABCを直接呼び出す方法を知ってもいいですか?

前もって感謝します。

CREATE OR REPLACE PACKAGE HPQ_IF.def AS
  FUNCTION def(p_sql IN VARCHAR2)
  RETURN VARCHAR2;
END def;
/


  FUNCTION abc(p_sql IN VARCHAR2)
  RETURN VARCHAR2
  IS
  j NUMBER;

  BEGIN
    dbms_output.put_line(p_sql);
    RETURN 'Done';
  END abc;

最後のエラー(以下の最初の答えを使用):

[Error] Execution (6: 31): ORA-06550: line 6, column 31:
PLS-00302: component 'abc' must be declared
ORA-06550: line 6, column 3:
PL/SQL: Statement ignored
ベストアンサー

TOAD SQLバッファー内:

DECLARE
   v_sql VARCHAR2(255);
   v_return VARCHAR2(255);
BEGIN
   v_sql := 'the string'; -- or get it from anywhere else
   v_return := HPQ_IF.def.abc(v_sql);
   dbms_output.put_line(v_return);
   -- do anything else you want to do with the return value here...
END;

情報を表示する以外の戻り値で何もしたくない場合は、次のようにします。

SELECT HPQ_IF.def.abc('the string') FROM DUAL;

ただし、PL/SQLファンクションをSQL(SELECT、INSERTなど)で呼び出すには、特定の副作用がない(データベース内の特定の種類の状態を変更できない)必要があります。
SELECTの列として呼び出すには、データベースの変更(たとえば、挿入または更新)、DDLの実行、またはトランザクションのコミットを行わないでください。


また、スキーマブラウザ内からプロシージャを実行することもできます。

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です