【发布时间】:2015-10-07 18:36:50
【问题描述】:
如何从 EXEC sp_executesql @OpenQry 获取返回值,以便检查该值是否存在于 IF EXISTS 中?
DECLARE @TableName VARCHAR(25)
DECLARE @TD_QUERY NVARCHAR(MAX)
DECLARE CUR_QRY CURSOR FOR
SELECT TABLENAME FROM dbo.tbl_table
OPEN CUR_QRY
FETCH NEXT FROM CUR_QRY INTO @TableName
WHILE @@FETCH_STATUS = 0
BEGIN
SET @OpenQry = 'SELECT * FROM OPENQUERY(linkedserver,''SELECT TABLENAME FROM DBC.TABLES WHERE TABLEKIND=''''T'''' AND DATABASENAME=''''dbname'''' AND TABLENAME=''''' + @TableName + ''''''')'
EXEC sp_executesql @OpenQry
IF EXISTS (SELECT @OpenQry)
AND EXISTS (SELECT TableName FROM dbo.table WHERE TableName=@TableName)
FETCH NEXT FROM CUR_QRY INTO @TableName
END
CLOSE CUR_QRY
DEALLOCATE CUR_QRY
【问题讨论】:
-
您必须将动态 sql 的结果放入表中(持久、临时或变量)。您是否有理由不能只查询链接服务器?这种游标方法会让你的表演失去活力。