iT邦幫忙

0

MSSQL SP_EXECUTESQL 組合執行字串問題請教

  • 分享至 

  • xImage

您好:
如下

DECLARE @sTable varchar(30)

set @sTable='AA'

declare @rtn varchar(12)
DECLARE @dlvno varchar(20)='PP660002'

DECLARE @query NVARCHAR(MAX) = N'
   select  @rtn= dlvno from '+@sTable+' WHERE dlvno=@dlvno
;'

EXEC SP_EXECUTESQL @query, N' @rtn varchar(12) output, @dlvno varchar(20)', @rtn=@rtn output, @dlvno=@dlvno ;

SELECT @rtn

這樣可以執行
但若我想連

select  @rtn= dlvno from '+@sTable+' WHERE dlvno=@dlvno
==>改為
 select  @rtn= dlvno from @sTable WHERE dlvno=@dlvno

不用+ 來組字串
該如何做呢?

有試過 說要宣告 @sTable

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

1
純真的人
iT邦大師 1 級 ‧ 2024-10-23 16:33:13

就裡面也宣告declare

DECLARE @query NVARCHAR(MAX) = N'
   DECLARE @sTable varchar(30)
   set @sTable='''+@sTable+'''
   select  @rtn= dlvno from @sTable WHERE dlvno=@dlvno
;'
noway iT邦研究生 1 級 ‧ 2024-10-24 08:44:04 檢舉

您好:
會出現
訊息 137,層級 15,狀態 2,行 4
必須宣告純量變數 "@sTable"。

我搞錯了~那個from只有限定表格物件~

所以 declare @sTable table(....)



DECLARE @query NVARCHAR(MAX) = N'
   declare @sTable table(....)
   insert into @sTable
   select .....
   from [' + @sTable + ']
   
   select  @rtn= dlvno from @sTable WHERE dlvno=@dlvno
;'

但是如果是純字串 表格名稱~應該是這樣~

EXEC SP_EXECUTESQL @query, N' @rtn varchar(12) output, @dlvno varchar(20) ,@sTable varchar(30) ', @rtn=@rtn output, @dlvno=@dlvno ,@sTable ;

我要發表回答

立即登入回答