您好:如下

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

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
;\'

  • 3

noway

iT邦研究生 1 级 ‧
2024-10-24 08:44:04

您好:
会出现
讯息 137,层级 15,状态 2,行 4
必须宣告纯量变数 "@sTable"。

修改

纯真的人

iT邦大师 1 级 ‧
2024-10-24 08:56:13

我搞错了~那个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
;\'

修改

纯真的人

iT邦大师 1 级 ‧
2024-10-25 08:28:15

但是如果是纯字串 表格名称~应该是这样~

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

修改