请帮忙。
我正在尝试创建一个类似于此代码的过程:
DECLARE @OldPK AS VARCHAR(50)
DECLARE @PK AS VARCHAR(50)
DECLARE @S AS NVARCHAR(MAX)
DECLARE @P AS NVARCHAR(MAX)
SET @PK = 'ModeName'
SET @S = N'SELECT @pOldPK = @pPK FROM Modes '
SET @P = N'@pPK VARCHAR(50), @pOldPK VARCHAR(50) OUTPUT'
EXECUTE dbo.sp_executesql @S, @P, @pPK = @PK, @pOldPK = @OldPK OUTPUT
SELECT @OldPK
当我尝试调试并在行之后
EXECUTE dbo.sp_executesql @S, @P, @pPK = @PK, @pOldPK = @OldPK OUTPUT
停止并生成错误
对象引用未设置为对象的实例
非常感谢您的宝贵意见。
感谢。
答案 0 :(得分:0)
立即尝试,您的列名将被视为文字字符串,就像您尝试这样做一样。
DECLARE @OldPK AS VARCHAR(50)
DECLARE @PK AS VARCHAR(50)
DECLARE @S AS NVARCHAR(MAX)
DECLARE @P AS NVARCHAR(MAX)
SET @PK = 'ModeName'
SET @S = N'SELECT TOP 1 @pOldPK = ' + QUOTENAME(@pPK) + ' FROM Modes '
SET @P = N'@pOldPK VARCHAR(50) OUTPUT'
EXECUTE dbo.sp_executesql @S
, @P
, @pOldPK = @OldPK OUTPUT
SELECT @OldPK