0
Oracle UDFを初めて使用しています。私は、CベースのUDF myUDFs.doStuff
を呼び出すOracle UDF UDF_DoStuff
を以下のように持っています。Oracle UDFに関する問題
私は、クエリを実行しているユーザー名を取得し、myUDFs.doStuff
にそれを渡すためにそれを修正しようとしています
FUNCTION UDF_DoStuff (
str1 IN VARCHAR2,
str2 IN VARCHAR2
)
RETURN VARCHAR2 AS output VARCHAR2(50);
BEGIN
output:= CASE
WHEN str2 = 'x' THEN myUDFs.doStuff(str1,'a')
WHEN str2 = 'y' THEN myUDFs.doStuff(str1,'b')
ELSE null
END;
RETURN output;
END;
を作成したり、交換してください。
create or replace
FUNCTION UDF_DoStuff (
str1 IN VARCHAR2,
str2 IN VARCHAR2
)
RETURN VARCHAR2 AS output VARCHAR2(50);
uname VARCHAR2(50);
BEGIN
select SYS_CONTEXT('USERENV', 'SESSION_USER') into uname from dual;
output:= CASE
WHEN str2 = 'x' THEN myUDFs.doStuff(str1,'a', uname)
WHEN str2 = 'y' THEN myUDFs.doStuff(str1,'b', uname)
ELSE null
END;
RETURN output;
END;
しかし、文output:= CASE
の近くに次のエラーが表示されます。どのように私はそれを動作させることができる任意の考え?代わりに、このような
Error(10,4): PL/SQL: Statement ignored
あなたのケースステートメントのように見えますが、ENDが必要です。それに加えて – markg
SQL * Plusですべての開発を行う場合は、今後マニュアルをブックマークする価値があります。https://docs.oracle.com/database/121/SQPUG/ch_twelve041.htm #SQPUG124 –