我正在尝试将存档表中的一行复制到原始表中。
如果没有 myWHERE
子句,table2 的整个表将被复制到 table1。我当然不想要这个。因此,根据列出的 gridview 的 ID 值,表格将仅复制 ID 相同的行。
当我调试这些行时,我得到了列出的正确 ID DisplaySup.Rows(0).Cells(2).Text
。
(
val_ID table2.V_ID%type
)
is
begin
execute immediate 'insert into table1 (select * from table2 where V_ID = val_ID)';
end;
然而我得到了错误
ORA-00904: "VAL_ID": 无效标识符
表 2 和表 1 具有相同的列;所以他们都有名为V_ID
. 我不确定为什么Val_ID
要标记错误。
VB.net 代码行:
SupArchive.Parameters.Add("val_ID", OleDbType.VarChar).Value = DisplaySup.Rows(0).Cells(2).Text
所以我试图参考:EXECUTE IMMEDIATE with USING 子句给出错误
像这样修复 WHERE:
(
val_ID table2.V_ID%type
)
is
begin
execute immediate 'insert into table1 (select * from table2 where V_ID = '||val_ID||')';
end;
但我得到错误:
ORA-00904: "val_ID": 无效标识符
有关如何修复我的存储过程的任何建议?
更新:
尝试执行建议:
(
val_ID table2.V_ID%type
)
AS
BEGIN
execute immediate 'insert into table1 (col1, col2, col3...)(select col1, col2, col3... from table2 where V_ID = :val_ID)' using val_ID;
end;
但得到错误:
ORA-00904: "col72": invalid identifier
对于 Select 语句后的 col72
我的表示例(两者相同) table2 的目的是当 table1 中的一行被删除时,table2 可以重新创建被删除的用户
表格1
ID CompanyName FirstName LastName ....(72 列)
表2
ID CompanyName FirstName LastName...(72 列)