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
hch
bonjour
@@nestlevel est une variable qui vous donne le niveau d'imbrication de la procedure stockée en cours d'execution !!!
Lorsque vous executez sp_execute ....... (c'est une procedure a 2 niveaux d'imbrication) l'autre exec (select @@nestlevel) est a 1 seul niveau d'imbrication
les niveaux d'imbrication ds les sp de sql server sont limités a 32 !!!
essayez ce code vous allez tout de suite comprendre ce qui vous arrive
*******************
Cet exemple crée deux procédures : une qui appelle l'autre et une qui affiche le paramètre @@NESTLEVEL de chacune d'entre elles.
CREATE PROCEDURE innerproc as select @@NESTLEVEL AS 'Inner Level' GO
CREATE PROCEDURE outerproc as select @@NESTLEVEL AS 'Outer Level' EXEC innerproc GO
EXECUTE outerproc GO Voici le jeu de résultats obtenu :
Est-ce que quelqu'un saurait m'expliquer pourquoi sp_executesql N'select @@nestlevel' retourne 2 alors que exec ('select @@nestlevel') retourne 1?
Merci d'avance. JN BERGER
bonjour
@@nestlevel est une variable qui vous donne le niveau d'imbrication de la
procedure stockée en cours d'execution !!!
Lorsque vous executez sp_execute ....... (c'est une procedure a 2 niveaux
d'imbrication) l'autre exec (select @@nestlevel) est a 1 seul niveau
d'imbrication
les niveaux d'imbrication ds les sp de sql server sont limités a 32 !!!
essayez ce code vous allez tout de suite comprendre ce qui vous arrive
*******************
Cet exemple crée deux procédures : une qui appelle l'autre et une qui
affiche le paramètre @@NESTLEVEL de chacune d'entre elles.
CREATE PROCEDURE innerproc as
select @@NESTLEVEL AS 'Inner Level'
GO
CREATE PROCEDURE outerproc as
select @@NESTLEVEL AS 'Outer Level'
EXEC innerproc
GO
EXECUTE outerproc
GO
Voici le jeu de résultats obtenu :
@@nestlevel est une variable qui vous donne le niveau d'imbrication de la procedure stockée en cours d'execution !!!
Lorsque vous executez sp_execute ....... (c'est une procedure a 2 niveaux d'imbrication) l'autre exec (select @@nestlevel) est a 1 seul niveau d'imbrication
les niveaux d'imbrication ds les sp de sql server sont limités a 32 !!!
essayez ce code vous allez tout de suite comprendre ce qui vous arrive
*******************
Cet exemple crée deux procédures : une qui appelle l'autre et une qui affiche le paramètre @@NESTLEVEL de chacune d'entre elles.
CREATE PROCEDURE innerproc as select @@NESTLEVEL AS 'Inner Level' GO
CREATE PROCEDURE outerproc as select @@NESTLEVEL AS 'Outer Level' EXEC innerproc GO
EXECUTE outerproc GO Voici le jeu de résultats obtenu :
Est-ce que quelqu'un saurait m'expliquer pourquoi sp_executesql N'select @@nestlevel' retourne 2 alors que exec ('select @@nestlevel') retourne 1?
Merci d'avance. JN BERGER
Med Bouchenafa
Très bonne découverte !!! Cela montre effectivement de belle manière le comportement des trois modes SELECT @@nestlevel EXEC ('SELECT @@nestlevel') EXEC sp_executesql N'SELECT @@nestlevel'
Cela demontre aussi de façon irréfutable que sp_executesql appelle en interne une autre porcédure.
-- Bien cordialement Med Bouchenafa
"Jean-Nicolas BERGER" a écrit dans le message de news:
Bonjour,
Est-ce que quelqu'un saurait m'expliquer pourquoi sp_executesql N'select @@nestlevel' retourne 2 alors que exec ('select @@nestlevel') retourne 1?
Merci d'avance. JN BERGER
Très bonne découverte !!!
Cela montre effectivement de belle manière le comportement des trois modes
SELECT @@nestlevel
EXEC ('SELECT @@nestlevel')
EXEC sp_executesql N'SELECT @@nestlevel'
Cela demontre aussi de façon irréfutable que sp_executesql appelle en
interne une autre porcédure.
--
Bien cordialement
Med Bouchenafa
"Jean-Nicolas BERGER" <j-n.enlevezmoi.berger@club-internet.fr> a écrit dans
le message de news: OgMtFkKMFHA.4080@TK2MSFTNGP09.phx.gbl...
Bonjour,
Est-ce que quelqu'un saurait m'expliquer pourquoi
sp_executesql N'select @@nestlevel'
retourne 2 alors que
exec ('select @@nestlevel')
retourne 1?
Très bonne découverte !!! Cela montre effectivement de belle manière le comportement des trois modes SELECT @@nestlevel EXEC ('SELECT @@nestlevel') EXEC sp_executesql N'SELECT @@nestlevel'
Cela demontre aussi de façon irréfutable que sp_executesql appelle en interne une autre porcédure.
-- Bien cordialement Med Bouchenafa
"Jean-Nicolas BERGER" a écrit dans le message de news:
Bonjour,
Est-ce que quelqu'un saurait m'expliquer pourquoi sp_executesql N'select @@nestlevel' retourne 2 alors que exec ('select @@nestlevel') retourne 1?
Merci d'avance. JN BERGER
hch
cela montre aussi que lorsqu'on veut utiliser une SP systeme ou autre de sql a inclure dans une procedure stockée perso il vaut mieux aller tester le niveau d'imbrication et s'il est superieur a 1 faut se poser la question des performances!!!!!
Bon travail
"Med Bouchenafa" a écrit :
Très bonne découverte !!! Cela montre effectivement de belle manière le comportement des trois modes SELECT @@nestlevel EXEC ('SELECT @@nestlevel') EXEC sp_executesql N'SELECT @@nestlevel'
Cela demontre aussi de façon irréfutable que sp_executesql appelle en interne une autre porcédure.
-- Bien cordialement Med Bouchenafa
"Jean-Nicolas BERGER" a écrit dans le message de news: > Bonjour, > > Est-ce que quelqu'un saurait m'expliquer pourquoi > sp_executesql N'select @@nestlevel' > retourne 2 alors que > exec ('select @@nestlevel') > retourne 1? > > Merci d'avance. > JN BERGER >
cela montre aussi que lorsqu'on veut utiliser une SP systeme ou autre de sql
a inclure dans une procedure stockée perso il vaut mieux aller tester le
niveau d'imbrication et s'il est superieur a 1 faut se poser la question des
performances!!!!!
Bon travail
"Med Bouchenafa" a écrit :
Très bonne découverte !!!
Cela montre effectivement de belle manière le comportement des trois modes
SELECT @@nestlevel
EXEC ('SELECT @@nestlevel')
EXEC sp_executesql N'SELECT @@nestlevel'
Cela demontre aussi de façon irréfutable que sp_executesql appelle en
interne une autre porcédure.
--
Bien cordialement
Med Bouchenafa
"Jean-Nicolas BERGER" <j-n.enlevezmoi.berger@club-internet.fr> a écrit dans
le message de news: OgMtFkKMFHA.4080@TK2MSFTNGP09.phx.gbl...
> Bonjour,
>
> Est-ce que quelqu'un saurait m'expliquer pourquoi
> sp_executesql N'select @@nestlevel'
> retourne 2 alors que
> exec ('select @@nestlevel')
> retourne 1?
>
> Merci d'avance.
> JN BERGER
>
cela montre aussi que lorsqu'on veut utiliser une SP systeme ou autre de sql a inclure dans une procedure stockée perso il vaut mieux aller tester le niveau d'imbrication et s'il est superieur a 1 faut se poser la question des performances!!!!!
Bon travail
"Med Bouchenafa" a écrit :
Très bonne découverte !!! Cela montre effectivement de belle manière le comportement des trois modes SELECT @@nestlevel EXEC ('SELECT @@nestlevel') EXEC sp_executesql N'SELECT @@nestlevel'
Cela demontre aussi de façon irréfutable que sp_executesql appelle en interne une autre porcédure.
-- Bien cordialement Med Bouchenafa
"Jean-Nicolas BERGER" a écrit dans le message de news: > Bonjour, > > Est-ce que quelqu'un saurait m'expliquer pourquoi > sp_executesql N'select @@nestlevel' > retourne 2 alors que > exec ('select @@nestlevel') > retourne 1? > > Merci d'avance. > JN BERGER >
Jean-Nicolas BERGER
> Cela demontre aussi de façon irréfutable que sp_executesql appelle en interne une autre porcédure.
C'est vrai, mais étrange à la fois. En effet, de la part d'une procédure native (dont le code est invisible au sp_helptext), on aurait pu s'attendre à un traitement direct, en ne prenant qu'un niveau d'imbrication au lieu de 2 !
JN.
> Cela demontre aussi de façon irréfutable que sp_executesql appelle en
interne une autre porcédure.
C'est vrai, mais étrange à la fois. En effet, de la part d'une procédure
native (dont le code est invisible au sp_helptext), on aurait pu s'attendre à
un traitement direct, en ne prenant qu'un niveau d'imbrication au lieu de 2 !
> Cela demontre aussi de façon irréfutable que sp_executesql appelle en interne une autre porcédure.
C'est vrai, mais étrange à la fois. En effet, de la part d'une procédure native (dont le code est invisible au sp_helptext), on aurait pu s'attendre à un traitement direct, en ne prenant qu'un niveau d'imbrication au lieu de 2 !