口渴,使用 IF 条件而不是 While 执行逻辑运算。此外,您的查询是错误的,我这样修改它;
IF
While
IF(EXISTS(SELECT COLUMN_NAME FROM ( SELECT SC.name as TABLE_SCHEMA, t.name as TABLE_NAME, ind.name as indexName, ind.type_desc AS type_Index, SUBSTRING(( SELECT ', ' + AC.name FROM DATA.sys.[tables] AS T INNER JOIN DATA.sys.[indexes] I ON T.[object_id] = I.[object_id] INNER JOIN DATA.sys.[index_columns] IC ON I.[object_id] = IC.[object_id] AND I.[index_id] = IC.[index_id] INNER JOIN DATA.sys.[all_columns] AC ON T.[object_id] = AC.[object_id] AND IC.[column_id] = AC.[column_id] WHERE ind.[object_id] = I.[object_id] AND ind.index_id = I.index_id AND IC.is_included_column = 0 ORDER BY IC.key_ordinal FOR XML PATH('')), 2, 8000) AS COLUMN_NAME FROM DATA.sys.indexes ind INNER JOIN DATA.sys.index_columns ic ON ind.object_id = ic.object_id and ind.index_id = ic.index_id INNER JOIN DATA.sys.columns col ON ic.object_id = col.object_id and ic.column_id = col.column_id INNER JOIN DATA.sys.tables t ON ind.object_id = t.object_id INNER JOIN DATA.sys.schemas SC ON t.schema_id = SC.schema_id WHERE SC.name ='SSCI_SALR') as SubQ WHERE COLUMN_NAME IN ( SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE DATA_TYPE IN ('nchar', 'nvarchar') and TABLE_SCHEMA IN ('SSCI_SALR', 'SYSTEM_SALR')) GROUP BY COLUMN_NAME)) begin print 'ok' end