Таблица с операторами выбора, выполнением динамического SQL и возвращаемыми значениями

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

6
задан KM. 4 October 2010 в 18:45
поделиться