OVH Cloud OVH Cloud

Curseurs paramétrables

2 réponses
Avatar
Alex
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

2 réponses

Avatar
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


Avatar
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