1

ループ内でテーブルを更新し、一時変数に格納されている値を追加したいと考えています。コードの一部を次に示します。

SELECT SUM(CASE WHEN temp_atr_val = temp_val THEN net_sales_home ELSE 0 END) into temp_variable
       FROM schemafinal_1;
EXECUTE IMMEDIATE 'ALTER TABLE SAR ADD ('||temp_name||' number)';
EXECUTE IMMEDIATE ' UPDATE SAR b 
SET b.'||temp_name||' = temp_variable';
END LOOP;
END LOOP;   
END;

上記のコードを実行すると、ORA-00904: "TEMP_VARIABLE": 無効な識別子と表示され、& を temp_variable の前に置くと、バインド値を求められ、その値が各セルに入力されます。:temp_variable を使用すると、「ORA-01008: すべての変数がバインドされていません」と表示されます

私は pl/sql および oracle sql 開発者は初めてです。助けてください

4

2 に答える 2

0

EXECUTE IMMEDIATE ' UPDATE SAR b SET b.'||temp_name||' を使用する必要があります。= ' || to_char(temp_variable); または EXECUTE IMMEDIATE 'UPDATE SAR b SET b.'||temp_name||' = :a' temp_variable を使用

temp_variable は範囲外であるため、更新に失敗します。

于 2012-08-30T18:31:42.437 に答える
0

どうぞ-

SELECT SUM(CASE WHEN temp_atr_val = temp_val THEN net_sales_home ELSE 0 END) into temp_variable
       FROM schemafinal_1;
EXECUTE IMMEDIATE 'ALTER TABLE SAR ADD ('||temp_name||' number)';
EXECUTE IMMEDIATE 'UPDATE SAR b SET b.'||temp_name||' = '|| temp_variable;
END LOOP;
END LOOP;   
END;
于 2012-09-05T01:44:50.197 に答える