私は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の実行、またはトランザクションのコミットを行わないでください。
また、スキーマブラウザ内からプロシージャを実行することもできます。