【发布时间】:2011-04-20 22:25:31
【问题描述】:
我有一个 select 语句,它返回一个充满 SELECT 语句的表(它遍历每个表中的每一列,并创建一个选择来查找该列是否包含任何错误数据)。
我需要获取这个充满 SELECT 语句的表,执行它们,并查看它们中是否有任何返回行。如果count(*) > 0,那么我想打印一些数据。
我在想我必须使用光标,但我不知道我将如何做到这一点。
这是我获取不良数据计数的代码。
SELECT 'SELECT count(*), '' '+sysobjects.name + ' - ' + syscolumns.name +
' '' FROM ['
+sysobjects.name + '] WHERE UNICODE(SUBSTRING(['+syscolumns.name+'],Len(['+syscolumns.name+']),1)) = 0'
FROM sysobjects
JOIN syscolumns ON sysobjects.id = syscolumns.id
JOIN systypes ON syscolumns.xtype=systypes.xtype
WHERE sysobjects.xtype='U' and systypes.name IN ('varchar', 'nvarchar')
ORDER BY sysobjects.name,syscolumns.colid
这将返回一个包含如下行的表:
SELECT count(*), ' All_MW_Users - LastName ' FROM [All_MW_Users] WHERE UNICODE(SUBSTRING([LastName],Len([LastName]),1)) = 0
我需要执行这个选择,如果 count(*) > 0,则打印第二列。我不想在结果或消息中显示任何内容,除非有数据显示。
【问题讨论】:
-
您使用哪个版本的 SQL Server?
-
我的最新编辑是否符合您的要求?
-
2005 ...(还有 11 个字符)
标签: sql sql-server sql-server-2005 dynamic-sql