J'ai une procédure qui doit être appelée depuis différents trigger.
Je dois donc appeler cette procédure pour chaque ligne de la table
deleted et inserted (en fonctions d'autres critères mais peu importe).
Dois-passer par un cursor pour récupérer les valeurs à transmettre à la
procédure ?
J'ai souvent lu que les curseurs étaient à éviter. Est-ce qu'il serait
plus efficace de faire une fonction à la place de la procédure et
d'appeler cette fonction depuis une simple requête de sélection, genre :
select maFonction(deleted.xxx, deleted.yyy) from deleted
Est-ce que ça va appeler maFonction pour chaque ligne de deleted ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
SQLpro
On 16 jan, 11:24, J wrote:
Bonjour,
J'ai une procédure qui doit être appelée depuis différents trigger . Je dois donc appeler cette procédure pour chaque ligne de la table deleted et inserted (en fonctions d'autres critères mais peu importe).
Dois-passer par un cursor pour récupérer les valeurs à transmettre à la procédure ?
Vous pouvez, mais TRIGER + SP c'est TRES TRES contre performant...
J'ai souvent lu que les curseurs étaient à éviter.
oui, car peu optimisable donc lent
Est-ce qu'il serait plus efficace de faire une fonction à la place de la procédure et
pourquoi pas
d'appeler cette fonction depuis une simple requête de sélection, genre : select maFonction(deleted.xxx, deleted.yyy) from deleted Est-ce que ça va appeler maFonction pour chaque ligne de deleted ?
oui, mais une fonction ne peut pas faire de mise à jour...
Merci.
Jean
Pour d''autres solutions, lisez l'article que j'ai écrit : http://sqlpro.developpez.com/cours/sqlserver/MSSQLServer_avoidCursor/
A +
Fred Brouard, alias SQLpro Expert langage SQL, modélisation de données et MS SQL Server Le site du SQL : http://sqlpro.developpez.com/ Formations, conseils, audit, modélisation, optimisation, tuning : http://www.sqlspot.com
On 16 jan, 11:24, J <laco...@alussinan.org> wrote:
Bonjour,
J'ai une procédure qui doit être appelée depuis différents trigger .
Je dois donc appeler cette procédure pour chaque ligne de la table
deleted et inserted (en fonctions d'autres critères mais peu importe).
Dois-passer par un cursor pour récupérer les valeurs à transmettre à la
procédure ?
Vous pouvez, mais TRIGER + SP c'est TRES TRES contre performant...
J'ai souvent lu que les curseurs étaient à éviter.
oui, car peu optimisable donc lent
Est-ce qu'il serait
plus efficace de faire une fonction à la place de la procédure et
pourquoi pas
d'appeler cette fonction depuis une simple requête de sélection, genre :
select maFonction(deleted.xxx, deleted.yyy) from deleted
Est-ce que ça va appeler maFonction pour chaque ligne de deleted ?
oui, mais une fonction ne peut pas faire de mise à jour...
Merci.
Jean
Pour d''autres solutions, lisez l'article que j'ai écrit :
http://sqlpro.developpez.com/cours/sqlserver/MSSQLServer_avoidCursor/
A +
Fred Brouard, alias SQLpro
Expert langage SQL, modélisation de données et MS SQL Server
Le site du SQL : http://sqlpro.developpez.com/
Formations, conseils, audit, modélisation,
optimisation, tuning : http://www.sqlspot.com
J'ai une procédure qui doit être appelée depuis différents trigger . Je dois donc appeler cette procédure pour chaque ligne de la table deleted et inserted (en fonctions d'autres critères mais peu importe).
Dois-passer par un cursor pour récupérer les valeurs à transmettre à la procédure ?
Vous pouvez, mais TRIGER + SP c'est TRES TRES contre performant...
J'ai souvent lu que les curseurs étaient à éviter.
oui, car peu optimisable donc lent
Est-ce qu'il serait plus efficace de faire une fonction à la place de la procédure et
pourquoi pas
d'appeler cette fonction depuis une simple requête de sélection, genre : select maFonction(deleted.xxx, deleted.yyy) from deleted Est-ce que ça va appeler maFonction pour chaque ligne de deleted ?
oui, mais une fonction ne peut pas faire de mise à jour...
Merci.
Jean
Pour d''autres solutions, lisez l'article que j'ai écrit : http://sqlpro.developpez.com/cours/sqlserver/MSSQLServer_avoidCursor/
A +
Fred Brouard, alias SQLpro Expert langage SQL, modélisation de données et MS SQL Server Le site du SQL : http://sqlpro.developpez.com/ Formations, conseils, audit, modélisation, optimisation, tuning : http://www.sqlspot.com
J
SQLpro a écrit :
On 16 jan, 11:24, J wrote:
Bonjour,
J'ai une procédure qui doit être appelée depuis différents trigger. Je dois donc appeler cette procédure pour chaque ligne de la table deleted et inserted (en fonctions d'autres critères mais peu importe).
Dois-passer par un cursor pour récupérer les valeurs à transmettre à la procédure ?
Vous pouvez, mais TRIGER + SP c'est TRES TRES contre performant...
Bon, j'ai réussi à me passer de la procédure et j'ai tout fait dans les triggers avec des insert et des updates assez compliqués.
d'appeler cette fonction depuis une simple requête de sélection, genre : select maFonction(deleted.xxx, deleted.yyy) from deleted Est-ce que ça va appeler maFonction pour chaque ligne de deleted ?
oui, mais une fonction ne peut pas faire de mise à jour...
Argh, j'avais oublié.
C'est dommage qu'on ne puisse pas avoir une construction du style : exec xxx @abc=tb.field from table tb where ...
En tout cas, merci pour votre réponse.
Jean
SQLpro a écrit :
On 16 jan, 11:24, J <laco...@alussinan.org> wrote:
Bonjour,
J'ai une procédure qui doit être appelée depuis différents trigger.
Je dois donc appeler cette procédure pour chaque ligne de la table
deleted et inserted (en fonctions d'autres critères mais peu importe).
Dois-passer par un cursor pour récupérer les valeurs à transmettre à la
procédure ?
Vous pouvez, mais TRIGER + SP c'est TRES TRES contre performant...
Bon, j'ai réussi à me passer de la procédure et j'ai tout fait dans les
triggers avec des insert et des updates assez compliqués.
d'appeler cette fonction depuis une simple requête de sélection, genre :
select maFonction(deleted.xxx, deleted.yyy) from deleted
Est-ce que ça va appeler maFonction pour chaque ligne de deleted ?
oui, mais une fonction ne peut pas faire de mise à jour...
Argh, j'avais oublié.
C'est dommage qu'on ne puisse pas avoir une construction du style :
exec xxx @abc=tb.field
from table tb
where ...
J'ai une procédure qui doit être appelée depuis différents trigger. Je dois donc appeler cette procédure pour chaque ligne de la table deleted et inserted (en fonctions d'autres critères mais peu importe).
Dois-passer par un cursor pour récupérer les valeurs à transmettre à la procédure ?
Vous pouvez, mais TRIGER + SP c'est TRES TRES contre performant...
Bon, j'ai réussi à me passer de la procédure et j'ai tout fait dans les triggers avec des insert et des updates assez compliqués.
d'appeler cette fonction depuis une simple requête de sélection, genre : select maFonction(deleted.xxx, deleted.yyy) from deleted Est-ce que ça va appeler maFonction pour chaque ligne de deleted ?
oui, mais une fonction ne peut pas faire de mise à jour...
Argh, j'avais oublié.
C'est dommage qu'on ne puisse pas avoir une construction du style : exec xxx @abc=tb.field from table tb where ...