用于创建插入SQL的脚本

时间:2016-09-23 13:59:14

标签: sql-server tsql concatenation string-concatenation

我试图创建一个连接各种值的脚本,最终创建一个插入脚本,我已经创建了一个。

WHILE (exists (select Id_EtapaCampoGen from WKF_EtapaCampoGen Where Id_Etapa = @Id_Etapa ))  

    INSERT INTO #SCRPTS
     SELECT getdate(),
      'INSERT WKF_EtapaCampoGen VALUES 
      (@Id_Etapa' +      
      ','+ ''''+ Des_Label + '''' +
      ','+ ''''+ Vl_Identificador + '''' +
      ','+ cast(Flg_Obrigatorio as Varchar(2)) +
      ',getdate(),'+ 
      ',' + CASE WHEN DT_Alteracao IS NULL OR DT_Alteracao = '' THEN 'NULL' ELSE '''' + 
      ',' + cast(FLG_Situacao as Varchar(2))+
      ',' + '''' + Tipo + '''' +
      ',' + '''' + Query + '''' +')'

      FROM WKF_EtapaCampoGen

结果如下:

INSERT WKF_EtapaCampoGen VALUES 
      (@Id_Etapa,'Areas','CampoComplementar1',0,getdate(),NULL,1,'Lista','select Des_area as Texto, Des_area as valor from wkf_area')

我正在做另一件事,但无法弄清楚为什么不起作用。

{{1}}

我有错误"在FROM"附近不正确的sintax,但是我看不出有什么问题,有人知道吗? 有趣的是,例如,列中的Des_Label列是脚本,DB找到它来自哪里的引用,但是如果我在from statment中有错误它是如何找到的?

在stament的情况下,这是一个END缺失,最后脚本返回了这个。

{{1}}

1 个答案:

答案 0 :(得分:1)

您的案例表达需要END

CASE WHEN DT_Alteracao IS NULL OR DT_Alteracao = '' THEN 'NULL' ELSE '''''' END