У меня есть оператор select, который возвращает таблицу, полную операторов SELECT (он просматривает каждый столбец в каждой таблице и создает выборку, чтобы определить, содержит ли этот столбец какие-либо неверные данные).
Мне нужно взять эту таблицу, полную операторов SELECT, выполнить их, и посмотрите, вернет ли какой-либо из них строки. Если счетчик (*)> 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
Мне нужно выполнить этот выбор, и если счетчик (*)> 0, то распечатать второй столбец. Я не хочу ничего показывать в результатах или сообщениях, если нет данных для отображения.