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