您好:如下
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
;\'
所以 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 ;
修改