J'ai une instruction select qui renvoie une table complète d'instructions SELECT (Elle passe en revue chaque colonne de chaque table et crée un select pour trouver si cette colonne contient des données incorrectes) .Tableau avec instructions Select, exécution de SQL dynamique et valeurs de retour
J'ai besoin de prendre cette table complète d'instructions SELECT, les exécuter et voir si l'une d'entre elles retourne des lignes. Si le nombre (*)> 0, alors je veux imprimer quelques données.
Je pensais que je devais utiliser un curseur, mais je ne sais pas comment j'accomplirais cela.
Voici mon code pour obtenir le nombre de mauvaises données.
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
Ce retourne un tableau avec des lignes comme:
SELECT count(*), ' All_MW_Users - LastName ' FROM [All_MW_Users] WHERE UNICODE(SUBSTRING([LastName],Len([LastName]),1)) = 0
que je dois exécuter cette sélection, et si le nombre (*)> 0, puis imprimer la deuxième colonne. Je ne veux rien afficher dans les résultats ou les messages, sauf s'il y a des données à afficher.
version du serveur SQL utilisez-vous ? –
Est-ce que ma dernière édition a fait ce que vous avez besoin? –
2005 ... (11 caractères de plus) – Martin