oracle 如何通过选择生成更新?

smtd7mpg  于 2023-10-16  发布在  Oracle
关注(0)|答案(2)|浏览(81)

我听说过可能使用select from dual table生成update/insert语句。我试图创建一些语句,但我总是得到无效的标识符。
我的声明:

select 'update some_table_1 t1 set t1.s_name = ' || some_table_2.s_name ||' 
where some_table_2.s_code = some_table_1.code; ' from dual;

比如我的情况是:表some_table_1s_name正在由some_table_2s_name中的数据更新,我想创建更新语句,但只针对需要它的行。
如何正确操作?
编辑:看看我的回答,这对理解我的意思很有帮助。

lbsnaicq

lbsnaicq1#

我发现如何正确地做,一般的例子:

select 'update table_name set column_name = 
'||variable_from_target_table||' where column_code = 
'||variable_from_target_table_2||';' from target_table;

例如:

select  'update some_table_1 set
  s_name = ''' ||s_name|| ''' where s_code = ''' ||s_code|| ''';' from some_table_2;

这将生成更新:

update some_table_1 set s_name = 'Jon' where s_code = 'Y';
update some_table_1 set s_name = 'Adam' where s_code = 'Y';
update some_table_1 set s_name = 'Matt' where s_code = 'Y';
update some_table_1 set s_name = 'Jess' where s_code = 'Y';
update some_table_1 set s_name = 'Carl' where s_code = 'Y';

我认为当你想生成许多语句时,这很有用。

2o7dmzc5

2o7dmzc52#

select 'update some_table_1 t1 set t1.s_name = ''' +  D.CODE + ''' 
where some_table_2.s_code = some_table_1.code; ' from ADMDEPTMAST D;

以上查询我是在SQL2008中执行的

相关问题