您好:
如下
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
就裡面也宣告declare
DECLARE @query NVARCHAR(MAX) = N'
DECLARE @sTable varchar(30)
set @sTable='''+@sTable+'''
select @rtn= dlvno from @sTable WHERE dlvno=@dlvno
;'
您好:
會出現
訊息 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 ;