我正在尝试验证链接服务器上是否存在作业编号并返回一个变量(@JobExists),指示它是否存在(1 表示是,0 表示否)。
为此,我尝试将 OPENQUERY 与 sp_executesql 一起使用,因为我必须传入作业编号的参数。我已经尝试了下面的代码,但得到错误“程序需要'ntext/nchar/nvarchar'类型的参数'@statement'。出于测试目的,我声明并设置了变量@JobNumber。
DECLARE @JobNumber as varchar(50)
SET @JobNumber = '2112111'
DECLARE @JobExists as BIT
DECLARE @JobCount as int
DECLARE @ParmDefinition as varchar(100)
DECLARE @sql as varchar(500)
SET @JobExists = 0
SET @ParmDefinition = N'@Result int output'
SET @sql = 'SELECT @Result = SELECT COUNT(*) FROM OPENQUERY(MYLINKEDSVR,''SELECT JOB_NUMBER FROM PROD.tbl1 WHERE JOB_NUMBER = ''''' + UPPER(RTRIM(LTRIM(@JobNumber))) + ''''''')'
exec sp_executesql @sql, @ParmDefinition, @Result = @JobCount output
IF @JobCount > 0
SET @JobExists = 1
SELECT @JobExists
我在这里阅读了 sp_executesql:http ://technet.microsoft.com/en-us/library/ms188001.aspx 我也进行了各种搜索,但没有找到任何适合我的答案。
有什么我想念的吗?