如何通过选择生成更新?

时间:2016-07-27 05:43:04

标签: sql oracle

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

我的陈述:

    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中的数据进行更新,我想要 创建更新状态,但仅适用于需要它的行。

如何正确完成?

编辑: 看看我的回答,了解我的意思非常有帮助。

2 个答案:

答案 0 :(得分:6)

我找到了如何正确地做到这一点,一般例子:

   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;

这会产生更新:

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

我认为当你想要发表许多陈述时,这是有用的。

答案 1 :(得分:2)

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

中执行上述查询