gpt4 book ai didi

sql - 带有Select语句、执行动态SQL并返回值的表

转载 作者:行者123 更新时间:2023-12-02 20:53:30 25 4
gpt4 key购买 nike

我有一个 select 语句,它返回一个充满 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,则打印第二列。除非有数据,否则我不想在结果或消息中显示任何内容显示。

最佳答案

试试这个:

DECLARE @SQL nvarchar(max)
SET @SQL='DECLARE @TempTable table (RowID int identity(1,1), CountOf int, DescriptionOf nvarchar(500));'
SELECT @SQL=@SQL+';INSERT @TempTable (CountOf,DescriptionOf ) 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

SET @SQL=@SQL+';SELECT * FROM @TempTable WHERE CountOF>0' --make sure there is no truncation of the commands

EXEC (@SQL)

关于sql - 带有Select语句、执行动态SQL并返回值的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3857632/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com