Ho un'istruzione select che restituisce una tabella completa di istruzioni SELECT (attraversa ogni colonna in ogni tabella e crea una selezione per trovare se quella colonna contiene dati non validi) .Tabella con istruzioni Select, esecuzione di SQL dinamico e valori restituiti
Ho bisogno di prendere questa tabella piena di istruzioni SELECT, eseguirle e vedere se qualcuno di loro restituisce righe. Se il conteggio (*)> 0, allora voglio stampare alcuni dati.
Stavo pensando di dover usare un cursore, ma non ho idea di come realizzarlo.
Ecco il mio codice per ottenere il conteggio dei dati errati.
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
Questo restituisce una tabella con righe come:
SELECT count(*), ' All_MW_Users - LastName ' FROM [All_MW_Users] WHERE UNICODE(SUBSTRING([LastName],Len([LastName]),1)) = 0
ho bisogno di eseguire questo selezionare, e se il conteggio (*)> 0, quindi stampare la seconda colonna. Non voglio mostrare nulla nei risultati o nei messaggi a meno che non ci siano dati da mostrare.
la versione di SQL Server si usa ? –
la mia ultima modifica ha fatto ciò di cui hai bisogno? –
2005 ... (11 caratteri in più) – Martin