Je souhaiterais créer des cursor dont l'instruction Select fait référence à
une table passée en paramètre de ma procédute stockée du style :
Create PROC MAPROC
(
@maTable as nvarchar(30)
)
as
DECLARE MONCURSEUR CURSOR FOR
SELECT CHAMP1, CHAMP2 FROM @maTable
...
Comment faire ? Bien-entendu ce que j'ai écris ci dessus ne fonctionne pas
et de surcroit l'utilisation de la commande Exec est à proscrire dans ce cas
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
Philippe T [MS]
Bonjour,
Pourquoi ne pas créer une table #maTable plutôt qu'une variable de type table ?
---------------------------------------------------------------------- Philippe TROTIN - Microsoft Service France
"Alex" wrote in message news:
Bonjour,
Je souhaiterais créer des cursor dont l'instruction Select fait référence à une table passée en paramètre de ma procédute stockée du style :
Create PROC MAPROC ( @maTable as nvarchar(30) ) as DECLARE MONCURSEUR CURSOR FOR SELECT CHAMP1, CHAMP2 FROM @maTable ...
Comment faire ? Bien-entendu ce que j'ai écris ci dessus ne fonctionne pas et de surcroit l'utilisation de la commande Exec est à proscrire dans ce cas
Bonjour,
Pourquoi ne pas créer une table #maTable plutôt qu'une variable de type
table ?
----------------------------------------------------------------------
Philippe TROTIN - Microsoft Service France
"Alex" <sogesalex@aol.com> wrote in message
news:5B9FD34E-D66A-4632-93CC-BAFF88C489CC@microsoft.com...
Bonjour,
Je souhaiterais créer des cursor dont l'instruction Select fait référence
à
une table passée en paramètre de ma procédute stockée du style :
Create PROC MAPROC
(
@maTable as nvarchar(30)
)
as
DECLARE MONCURSEUR CURSOR FOR
SELECT CHAMP1, CHAMP2 FROM @maTable
...
Comment faire ? Bien-entendu ce que j'ai écris ci dessus ne fonctionne pas
et de surcroit l'utilisation de la commande Exec est à proscrire dans ce
cas
Pourquoi ne pas créer une table #maTable plutôt qu'une variable de type table ?
---------------------------------------------------------------------- Philippe TROTIN - Microsoft Service France
"Alex" wrote in message news:
Bonjour,
Je souhaiterais créer des cursor dont l'instruction Select fait référence à une table passée en paramètre de ma procédute stockée du style :
Create PROC MAPROC ( @maTable as nvarchar(30) ) as DECLARE MONCURSEUR CURSOR FOR SELECT CHAMP1, CHAMP2 FROM @maTable ...
Comment faire ? Bien-entendu ce que j'ai écris ci dessus ne fonctionne pas et de surcroit l'utilisation de la commande Exec est à proscrire dans ce cas
Fred BROUARD
Déclaration d'un curseur en SQL dynamique :
DECLARE @CURSEUR VARCHAR(8000) SET @CURSEUR = 'CURSOR FOR SELECT TABLE_NAME FROM INORMATION_SCHEMA.TABLES'
OPEN @CURSEUR
FETCH @CURSEUR INTO ...
Bien enetendu la chaine de car. peut être construite dynamiquement.
Tout cela est bien entendu contre performant : 1) l'utilisation des curseurs est déconseillé si l'on peut s'en passer (et dans 95% des cas on peut s'en passer !) parce que contre performant 2) l'utilisation du SQL dynamique est d&éconseillé parce que contreperformant
Conclusion : l'utilisation d'un curseur construit avec du SQL dynamique est TRES contre performante...
Mais la question est : quel est ton but derrière ta demande ?
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 *************************
Alex a écrit:
Bonjour,
Je souhaiterais créer des cursor dont l'instruction Select fait référence à une table passée en paramètre de ma procédute stockée du style :
Create PROC MAPROC ( @maTable as nvarchar(30) ) as DECLARE MONCURSEUR CURSOR FOR SELECT CHAMP1, CHAMP2 FROM @maTable ...
Comment faire ? Bien-entendu ce que j'ai écris ci dessus ne fonctionne pas et de surcroit l'utilisation de la commande Exec est à proscrire dans ce cas
Déclaration d'un curseur en SQL dynamique :
DECLARE @CURSEUR VARCHAR(8000)
SET @CURSEUR = 'CURSOR FOR SELECT TABLE_NAME FROM INORMATION_SCHEMA.TABLES'
OPEN @CURSEUR
FETCH @CURSEUR INTO ...
Bien enetendu la chaine de car. peut être construite dynamiquement.
Tout cela est bien entendu contre performant :
1) l'utilisation des curseurs est déconseillé si l'on peut s'en passer (et dans
95% des cas on peut s'en passer !) parce que contre performant
2) l'utilisation du SQL dynamique est d&éconseillé parce que contreperformant
Conclusion : l'utilisation d'un curseur construit avec du SQL dynamique est TRES
contre performante...
Mais la question est : quel est ton but derrière ta demande ?
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 *************************
Alex a écrit:
Bonjour,
Je souhaiterais créer des cursor dont l'instruction Select fait référence à
une table passée en paramètre de ma procédute stockée du style :
Create PROC MAPROC
(
@maTable as nvarchar(30)
)
as
DECLARE MONCURSEUR CURSOR FOR
SELECT CHAMP1, CHAMP2 FROM @maTable
...
Comment faire ? Bien-entendu ce que j'ai écris ci dessus ne fonctionne pas
et de surcroit l'utilisation de la commande Exec est à proscrire dans ce cas
DECLARE @CURSEUR VARCHAR(8000) SET @CURSEUR = 'CURSOR FOR SELECT TABLE_NAME FROM INORMATION_SCHEMA.TABLES'
OPEN @CURSEUR
FETCH @CURSEUR INTO ...
Bien enetendu la chaine de car. peut être construite dynamiquement.
Tout cela est bien entendu contre performant : 1) l'utilisation des curseurs est déconseillé si l'on peut s'en passer (et dans 95% des cas on peut s'en passer !) parce que contre performant 2) l'utilisation du SQL dynamique est d&éconseillé parce que contreperformant
Conclusion : l'utilisation d'un curseur construit avec du SQL dynamique est TRES contre performante...
Mais la question est : quel est ton but derrière ta demande ?
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 *************************
Alex a écrit:
Bonjour,
Je souhaiterais créer des cursor dont l'instruction Select fait référence à une table passée en paramètre de ma procédute stockée du style :
Create PROC MAPROC ( @maTable as nvarchar(30) ) as DECLARE MONCURSEUR CURSOR FOR SELECT CHAMP1, CHAMP2 FROM @maTable ...
Comment faire ? Bien-entendu ce que j'ai écris ci dessus ne fonctionne pas et de surcroit l'utilisation de la commande Exec est à proscrire dans ce cas