Bonjour,
Un titre bien nul pour un problème qui ne l'est pas moins.
D'abord ce qui motive ma demande : nous utilisons un ERP qui s'appuie sur SQL Server. Or cet ERP a été tellement bien pensé qu'il comprend des tables comptant jusqu'à 250 colonnes.
Nous avons des PS qui ajoutent des données dans ces tables. Or ces PS utilisent au maximum une vingtaine de colonnes utiles. Les autres colonnes sont NULLable sans valeur par défaut mais on ne peut pas les laisser nulles car, comme les clients de l'ERP sont eux aussi bien fichus, cela génère des erreurs applicatives. Donc actuellement je suis obligé de me taper des requêtes à rallonge où l'on retrouve dans 90% des cas [COLUMN X]='' ou 0 ou etc.. Là où cela devient gênant, c'est que les montées de version modifient la structure de ces tables, avec ajout et suppression de colonnes. Et comme certaines requêtes de mes PS sont dynamiques, c'est fort pénible à maintenir.
Vous allez me dire c'est très simple il suffit soit de modifier la définition de ces table pour donner à ces champs une valeur par défaut, soit changer d'ERP. Pour la première solution, j'ai pour règle de m'interdire de toucher à la structure des tables (et ainsi d'éviter de se mettre en porte à faux vis à vis du support). Quant la seconde, elle n'est bien entendu pas envisageable (bien que cela me démangerait !).

Donc pour se simplifier la vie, j'ai souhaité procéder ainsi :
> Les PS créent leurs lignes avec la vingtaine de colonnes utiles sans s'occuper des autre colonnes.
> A la fin elle appellent une PS utilitaire qui parcourt leurs lignes et met à jour les champs qui sont nuls.

L'objet de ma question porte sur la façon d'implémenter plus intelligemment cette PS utilitaire. Actuellement celle-ci crée un curseur qui liste toutes les colonnes de la table, vérifie que chaque colonne soit nulle pour la ligne traitée, et dans l'affirmative l'ajoute à une requête UPDATE dynamique qui est exécutée en fin de traitement. Bref pour une table de 250 lignes, cela représente donc 250 requêtes Select et 1 requête Update. Fois le nombre de lignes .... ce qui n'est pas vraiment satisfaisant.

Auriez-vous des suggestions qui permettraient soit d'optimiser le traitement de cette PS, soit de procéder tout à fait différent ?

Merci d'avance.