[英]How to concatenate Int variable in the SQL Select Query
我必須編寫一個選擇查詢,並在選擇結果中串聯存儲過程Exec。
這是實際的存儲過程執行結果
exec wf_Move_bills ''' + billid+ ''',361,14098,14100, ''+ binid +'' ,''' + @comment + '''
BinId
是一個整數。 我在連接查詢時遇到麻煩。
結果返回為:
exec wf_Move_bills 'XZ242344',361,14098,14100, '+ binid +' ,'Moved by Dev :'
預期結果是:
exec wf_Move_bills 'XZ242344',361,14098,14100, 300 ,'Moved by Dev :'
因為在存儲過程中, binid
參數是int
,其長度為4
declare @comment nvarchar(4000)
set @comment= 'Moved by Dev:'
select
*,
'exec wf_Move_bills ''' + billid+ ''',361,14098,14144, ''+ binid +'' ,''' + @comment + ''' '
from
billingtable
+
超載。 也就是說,它意味着字符串連接和加法。 如果任何值是數字,則它是加法,並且會出現錯誤。
所以,做一個明確的cast
:
select *,
'exec wf_Move_bills ''' + billid+ ''',361,14098,14100, ''' + cast(binid as varchar(255)) +''' ,''' + @comment + '''
另外,對於這種類型的邏輯,我經常使用replace:
declare @str nvarchar(max);
set @str = 'exec wf_Move_bills @billid, 361, 14098, 14100, @binid, ''@comment''';
set @str = replace(@str, '@billid', @billid);
set @str = replace(@str, '@binid', @binid);
set @str = replace(@str, '@comment', replace(@comment, '''', '''''');
注意:這也為處理注釋中的任何單引號提供了機會。
您也可以使用sp_executedql
進行變量替換。
將''+ binid +''
更改為''+ convert(varchar(10), binid) +''
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.