【发布时间】:2018-01-25 08:27:15
【问题描述】:
我正在使用 Table - Valued Parameter 使用以下代码构建动态查询
AlTER PROCEDURE [dbo].[ABC]
@tblName Varchar(1000),
@Details ABC_TYPE Readonly
AS
BEGIN
Declare @PK as nvarchar(1000)
Declare @SyncFlag as nvarchar(1) ='S'
Declare @SelectCommand as nvarchar(1200)
Declare @tblName2 as nvarchar(1000) ='@Details_N'
Set @PK = 'PK'
Declare @Details_N as table (Pk int)
Insert into @Details_N(Pk)
select PK from @Details
set @SelectCommand = 'Update A ' + ' set A.Sync_Flag ='''+ @SyncFlag + ''' From '+ @tblName + ' A, ' + @tblName2 + ' B ' +
' where A.' + @PK +'='+ 'B.PK'
EXEC sp_executesql @SelectCommand;
这给了我错误
必须声明表变量“@Details_N”
没有找到我做错的地方
【问题讨论】:
-
我删除了我的答案,因为我发布得太快了。一个小评论是,在动态 SQL 中,您使用的是过时的 JOIN。 ANSI 标准是使用
SELECT * FROM TableA JOIN TableB ON TableA.ID = TableB.TableAID之类的东西。
标签: sql sql-server sql-server-2012 table-valued-parameters dynamicquery