Mettre à jour une colonne par rapport aux valeurs d'une autre

Le
Jerome
Bonjour,

Voici la problématique qui m'amène. J'ai une table dans laquelle je dispose
d'une colonne VALEUR1 (date dans un format numérique) renseignée. Une
nouvelle colonne VALEUR2 (date format SQL) a été créée dans la même table et
j'ai besoin de mettre à jour les valeurs de cette nouvelle colonne à partir
des données de la première.

J'ai déjà un déclencheur qui fait cela en appelant la procédure stockée
ci-dessous pour mettre à jour en dynamique la colonne VALEUR2 (à ce niveau
ca fonctionne)

execute DateSQL @DateAConvertir, @DateSQL = @DateSQLConvertie output

Par contre pour l'initialisation de cette colonne (opération qui bien sur ne
sera faite qu'ne seule fois à l'installation), j'ai besoin de parcourir
toutes les lignes de la table, de prendre chacune des valeurs de VALEUR1, de
les convertir dans la procédure stockée et de mettre le résultat dans la
colonne VALEUR2.

Je partais sur le fait de faire cela via un UPDATE. Je ne sais pas s'il est
possible d'appeler une procédure stockée dans la syntaxe d'un UPDATE (en
tout cas j'ai pas réussi).

Je sèche un peu sur la façon de procéder pour l'initialisation de cette
colonne

Si quelqu'un à une idée sur la façon de régler ce problème.

Merci en tout cas pour votre aide

Jerome
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Fred BROUARD
Le #11413671
bonjour,

Jerome a écrit:
Bonjour,

Voici la problématique qui m'amène. J'ai une table dans laquelle je dispose
d'une colonne VALEUR1 (date dans un format numérique) renseignée. Une
nouvelle colonne VALEUR2 (date format SQL) a été créée dans la même table et
j'ai besoin de mettre à jour les valeurs de cette nouvelle colonne à partir
des données de la première.

J'ai déjà un déclencheur qui fait cela en appelant la procédure stockée
ci-dessous pour mettre à jour en dynamique la colonne VALEUR2 (à ce niveau
ca fonctionne)

execute DateSQL @DateAConvertir, @DateSQL = @DateSQLConvertie output

Par contre pour l'initialisation de cette colonne (opération qui bien sur ne
sera faite qu'ne seule fois à l'installation), j'ai besoin de parcourir
toutes les lignes de la table, de prendre chacune des valeurs de VALEUR1, de
les convertir dans la procédure stockée et de mettre le résultat dans la
colonne VALEUR2.

Je partais sur le fait de faire cela via un UPDATE. Je ne sais pas s'il est
possible d'appeler une procédure stockée dans la syntaxe d'un UPDATE (en
tout cas j'ai pas réussi).

Je sèche un peu sur la façon de procéder pour l'initialisation de cette
colonne

Si quelqu'un à une idée sur la façon de régler ce problème....



on ne peut pas utiliser une procédure dans une requête. On peut en revanche
utiliser une UDF (fonction SQL). Pourquoi d'ailleurs avoir utiliser une
procédure dans votre trigger ??? C'est absurde, d'autant plus qu'un trigger
n'est déclenché qu'une seule fois même si le UPDATE concerne cent millions de
lignes !


Merci en tout cas pour votre aide

Jerome





A lire sur les triggers SQL Server :
http://sqlpro.developpez.com/cours/sqlserver/transactsql/#L5
A lire sur les UDF :
http://sqlpro.developpez.com/cours/sqlserver/transactsql/#L3

A +

--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************
Publicité
Poster une réponse
Anonyme