SQL Server存储过程将concat字符串作为查询

时间:2017-08-07 12:54:39

标签: sql sql-server database string stored-procedures

我想知道我是否可以将我的sql查询的某些部分定义为字符串。

我处理了下面的代码,但我无法将预定义的字符串部分连接到现有查询。

实际上@sirketid@uzman@basvurukodu参数效果很好,但@ORA_BASVURU_KESIN_KOSUL参数导致问题。

我认为因为它有一些像 这样的sql-spesific表达式,所以它比用于比较或分配的简单变量(例如@sirket_id)处理得差。

它不会抛出任何错误消息,代码根本不会执行操作。

SET @ORA_BASVURU_KESIN_KOSUL = 'and akftif = 1';

UPDATE basvuru 
SET sirket = @sirketid,
    talep_gorevlendirme_rapor = 'G',
    birimi = 'SS', 
    uzman = @uzman,
WHERE
    kod = @basvurukodu + ' ' + @ORA_BASVURU_KESIN_KOSUL; 

我可以查询这样的查询部分,如果是,怎么做?

由于

1 个答案:

答案 0 :(得分:1)

您的查询应该像:

  1. 连接整个查询
  2. 使用EXEC
  3. 执行查询

    当然你也必须声明其他变量:

    SET @ORA_BASVURU_KESIN_KOSUL = 'and akftif = 1';
    
    DECLARE @MyExecSQL varchar(2000) =
        'UPDATE basvuru 
            SET sirket = @sirketid
               ,talep_gorevlendirme_rapor = ''G''
               ,birimi = ''SS''
               ,uzman = ' + @uzman + 
         ' WHERE kod = ' + @basvurukodu + 
            ' ' + @ORA_BASVURU_KESIN_KOSUL + ''
    ;     
    EXEC @MyExecSQL