この問題の修正を見つけるのに数時間を費やしましたが、ここで質問することにしました。プロシージャ内のROWIDで選択するときに問題が発生する
ローのROWID
に基づいてテーブルから情報を取得する手順を実行しています。結果はexecute immediate
を使用してカスタムクエリを実行しています。私はSQL Developerで直接実行している次の行に問題を縮小しました。
declare
row_id ROWID;
consulta VARCHAR2(1000);
begin
row_id := 'AAAEC5AAFAAAADHAAC';
select 'insert into ' ||
(select TABLA from BITACORA where rowid = row_id) || ' values(' ||
(select VALOR_VIEJO from BITACORA where rowid = row_id) || ')'
into Consulta from dual;
DBMS_OUTPUT.PUT_LINE(Consulta);
--execute immediate Consulta;
end;
上記の行はそのまま動作しません。
insert into values()
を私は変数row_id
を排除し、このようなクエリで直接それを置けば、それは動作します::私はConsulta
の内容を印刷するとき、それは示して
declare
consulta VARCHAR2(1000);
begin
select 'insert into ' ||
(select TABLA from BITACORA where rowid = 'AAAEC5AAFAAAADHAAC') || ' values(' ||
(select VALOR_VIEJO from BITACORA where rowid = 'AAAEC5AAFAAAADHAAC') || ')'
into Consulta from dual;
DBMS_OUTPUT.PUT_LINE(Consulta);
--execute immediate Consulta;
end;
私が期待するものを表示します、
insert into MI_TABLA values(1,'Hola','Adios',3,1)
これは作業関連ではないため、パフォーマンス/セキュリティには関係ありません。ご意見ありがとうございます。
あなたはrowid =:row_idを入れてみることができますか? –
ええ、私は試してみましたが、それは私にエラーを与えます:(理由は:アウト変数 –