2016-07-04 5 views
-2

私は最近、私のcideで動的SQLを実装していて、まったく新しい概念を実装しています。私は、列名を取り、compiling.Pleaseは、以下のようなコードを見つけながら、関数がエラーを与えcall.However動的な機能を経由して値を更新します次の関数をしようとしていた:関数呼び出しを介して動的SQLを実装しようとしています

function upd_tab(col_name in varchar2,val in number) 
return pls_integer 
is 
BEGIN 
EXECUTE IMMEDIATE 'UPDATE EMPLOYEE1 SET '||col_name||'= :THE_VALUE WHERE EMP_NAME IN(:NAME1,:Nme2)' 
using val,john,aaron; 
RETURN SQL%ROWCOUNT; 
END; 

は、事前にありがとうあなたの助けに。

+1

どのようなエラーが表示されますか? – Tenzin

+0

「ジョン」と「アーロン」は宣言されていません。 – Tenzin

+0

エラー:[ORA-06550:行2、列46: PLS-00201:識別子 'COL_NAME'を宣言する必要があります ORA-06550:2行3列: PL/SQL:文が無視されます ORA-06550:行3列3: PL/SQL:ステートメントが無視されます。 06550.0001 - "行%s、列%原因:通常はPL/SQLのコンパイル・エラーです。] –

答えて

0

ここでは、using節で変数を宣言する必要があります。スニペットの下の希望が役立ちます。

FUNCTION upd_tab(
    col_name IN VARCHAR2, 
    val  IN NUMBER) 
    RETURN pls_integer 
IS 
BEGIN 
    EXECUTE IMMEDIATE 'UPDATE EMPLOYEE1 SET '||col_name||'= :THE_VALUE WHERE EMP_NAME IN(:NAME1,:Nme2)' USING val,'john','aaron'; 
    RETURN SQL%ROWCOUNT; 
END; 
+0

こんにちは皆さん、ありがとうございました。問題を調べてくれてありがとうございました。私は、あなたが与えたスニペットを試してみました。 ORA-06550:2行目、46列目: PLS-00201:識別子 'COL_NAME'を宣言する必要がありますORA-06550:行2、列3: ORA-06550:行3、列3: PLS-00372:プロシージャ内で、RETURN文に式を含めることはできません。 ORA-06550:行3、列3: 06550. 00000 - "行%s、列%s:\ n%s" *原因:通常はPL/SQLのコンパイル・エラーです。 –

関連する問題