FUNCTION呼び出しでFOR LOOP変数を使用する方法はありますか。たとえば、私は文字列を返す単純な関数を持っています。私は、プロシージャから関数を呼び出して、パラメータの一つは、FOR LOOPから変数である2つのパラメータを渡す:Oracle PL/SQL:FUNCTION呼び出しでFOR LOOP変数を使用するとエラーが発生する
create or replace package body TEST_JNS is
--
FUNCTION f_display_msg(var IN VARCHAR2,
num IN NUMBER)
RETURN VARCHAR2 IS
BEGIN
--
RETURN num || '#: ' || var || ' world';
END f_display_msg;
--
--
PROCEDURE main
AS
l_name VARCHAR2(100);
l_id NUMBER;
BEGIN
l_name := 'hello';
--
FOR f1 IN (SELECT TO_NUMBER(TRIM(REGEXP_SUBSTR('1,2,3', '[^,]+', 1, LEVEL))) AS "id"
FROM DUAL
CONNECT BY LEVEL <= LENGTH(REGEXP_REPLACE('1,2,3', '[^,]+')) + 1)
LOOP
--
dbms_output.put_line(f_display_msg(l_name, f1.id));
--
END LOOP;
END main;
--
end TEST_JNS;
私はエラーを取得:コンポーネントのIDは "宣言する必要があります。また、FOR LOOP値をローカル変数に追加しようとしましたが、同じ結果が得られました。何か案は?
を。デフォルトでは、oracleはソースをコンパイルする前にコードを大文字に変換し、コンパイラにリテラルの大文字小文字を変更しないように指示します。あなたのケースでは、コードIDとIDに2つの異なるリテラルがあるので、エラーが表示されます。 – Seyran
ありがとうございます。良いことを知っている! –