Ich habe eine Select-Anweisung, die eine Tabelle mit SELECT-Anweisungen zurückgibt (Sie durchläuft jede Spalte in jeder Tabelle und erstellt eine Auswahl, um festzustellen, ob diese Spalte ungültige Daten enthält) .Tabelle mit Select-Anweisungen, Ausführen von Dynamic SQL und Rückgabe von Werten
Ich muss diese Tabelle voll von SELECT-Anweisungen nehmen, sie ausführen und sehen, ob einige von ihnen Zeilen zurückgeben. Wenn die Anzahl (*)> 0 ist, dann möchte ich einige Daten ausdrucken.
Ich dachte, ich müsste einen Cursor verwenden, aber ich habe keine Ahnung, wie ich das erreichen würde.
Hier ist mein Code, um die Anzahl der schlechten Daten zu erhalten.
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
Dies gibt eine Tabelle mit Zeilen wie:
SELECT count(*), ' All_MW_Users - LastName ' FROM [All_MW_Users] WHERE UNICODE(SUBSTRING([LastName],Len([LastName]),1)) = 0
ich diese wählen Sie ausführen müssen, und wenn der COUNT (*)> 0, dann die zweite Spalte drucken. Ich möchte nichts in den Ergebnissen oder Nachrichten anzeigen, wenn keine Daten angezeigt werden.
die Version von SQL Server verwenden Sie, ? –
hat meine letzte Bearbeitung getan, was Sie brauchen? –
2005 ... (11 weitere Zeichen zu gehen) – Martin