Mam instrukcję select, która zwraca tabelę pełną instrukcji SELECT (Przechodzi przez każdą kolumnę w każdej tabeli i tworzy zaznaczenie, aby znaleźć, czy ta kolumna zawiera jakiekolwiek błędne dane) .Tabela z wybranymi instrukcjami, wykonywanie dynamicznego SQL i powracającymi wartościami
Muszę wziąć tę tabelę pełną instrukcji SELECT, wykonać je i sprawdzić, czy któryś z nich zwraca wiersze. Jeśli liczba (*)> 0, chcę wydrukować niektóre dane.
Myślałem, że muszę użyć kursora, ale nie mam pojęcia, jak to osiągnąć.
Oto mój kod, aby uzyskać liczbę złych danych.
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
ta zwraca tabelę z wierszy jak:
SELECT count(*), ' All_MW_Users - LastName ' FROM [All_MW_Users] WHERE UNICODE(SUBSTRING([LastName],Len([LastName]),1)) = 0
muszę wykonać to select, a jeśli count (*)> 0, a następnie wydrukować drugą kolumnę. Nie chcę pokazywać niczego w wynikach lub wiadomościach, chyba że są dane do pokazania.
która wersja serwera SQL Używasz ? –
czy moja ostatnia edycja zrobiła to, czego potrzebujesz? –
2005 ... (11 kolejnych znaków) – Martin