SQL 服务器游标错误



我想找到表中有~的记录。

我正在使用光标,但出现意外错误。

任何帮助将不胜感激。

DECLARE @test    VARCHAR(5000)
DECLARE @column_name     VARCHAR(2000)
Declare @TABLE_NAME_MAIN VARCHAR(200)
SET @TABLE_NAME_MAIN = 'Ar_Receipt_Item_OHM'
DECLARE cur_name 
CURSOR FOR
SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = @TABLE_NAME_MAIN
OPEN cur_name
FETCH NEXT FROM cur_name INTO @column_name
WHILE @@Fetch_status = 0
BEGIN
SET @test = N'SELECT top 2 * FROM OHMPreStage.dbo.'+@TABLE_NAME_MAIN+' WHERE '+@column_name+' LIKE ''%~%'''
exec @test      
FETCH NEXT FROM cur_name INTO @column_name
END
CLOSE cur_name
DEALLOCATE cur_name
SET NOCOUNT OFF

错误:

Msg 911,级别 16,状态 4,第 24
行 数据库"从OHMPreStage选择前2个*"不存在。确保正确输入名称。

你只需要改变:

exec @test  

exec (@test)  

EXEC用于执行存储过程,EXEC()函数将动态字符串放在一起并执行它。

搜索带有"LIKE"的列时可能会遇到问题 这些列不是字符串列。

您应该在此处查看此问题的答案,它为您提供了一个脚本,用于扫描数据库中的所有表以查找特定字符串内容:

选择具有指定值的列名

只需替换搜索字符串"%~%",如果需要,请将搜索的表限制为所需的一个(或一组)表。

最新更新