CURSOR sur un serveur distant

Le
WonderMan
Bonjour,

Avec SQL Server 2005, je voudrais créer un curseur qui effectue une
recherche sur une base distante (et réaliser un traitement pour chacune
des données qu'il me retournera). J'ai donc essayé la syntaxe suivante
:

DECLARE @nomTable AS VARCHAR(200)

SET @nomTable = '[' + @ServerName + '].' + @Instance_Name +
'.NomBase.dbo.MaTable'

DECLARE mon_curseur CURSOR FOR
SELECT Champ
FROM @nomTable
WHERE Champ2 = 100


mais j'obtiens un message d'erreur qui me demande de déclarer la
variable @nomTable (alors qu'elle est déjà déclarée).

Ma syntaxe est elle correcte ? Y a t-il un moyen de réaliser le
traitement en utilisant le curseur tel que je le déclare, ou faut-il
passer par une autre procédure stockée qui accèderait aux données du
serveur distant ?

Merci de votre aide.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
zoltix
Le #11879811
Hello,
Tu ne peux pas remplacer le nom d'une table par une varibale.......
Creer un store proc avec output paramter, faire un exec avec dyn
sql.....

Dans l'aid de sql cherche "OUTPUT cursor parameter"

A+




WonderMan a écrit :
Bonjour,

Avec SQL Server 2005, je voudrais cr�er un curseur qui effectue un e
recherche sur une base distante (et r�aliser un traitement pour ch acune
des donn�es qu'il me retournera). J'ai donc essay� la synt axe suivante
:

DECLARE @nomTable AS VARCHAR(200)

SET @nomTable = '[' + @ServerName + '].' + @Instance_Name +
'.NomBase.dbo.MaTable'

DECLARE mon_curseur CURSOR FOR
SELECT Champ
FROM @nomTable
WHERE Champ2 = 100


mais j'obtiens un message d'erreur qui me demande de d�clarer la
variable @nomTable (alors qu'elle est d�j� d�clar �e).

Ma syntaxe est elle correcte ? Y a t-il un moyen de r�aliser le
traitement en utilisant le curseur tel que je le d�clare, ou faut- il
passer par une autre proc�dure stock�e qui acc�der ait aux donn�es du
serveur distant ?

Merci de votre aide.


zoltix
Le #11879801
On 21 mai, 14:11, zoltix
Hello,
Tu ne peux pas remplacer le nom d'une table par une varibale.......
Creer un store proc avec output paramter, faire un exec avec dyn
sql.....

Dans l'aid de sql cherche "OUTPUT cursor parameter"

A+

WonderMan a écrit :

> Bonjour,

> Avec SQL Server 2005, je voudrais cr�er un curseur qui effectue une
> recherche sur une base distante (et r�aliser un traitement pour chacune
> des donn�es qu'il me retournera). J'ai donc essay� la sy ntaxe suivante
> :

> DECLARE @nomTable AS VARCHAR(200)

> SET @nomTable = '[' + @ServerName + '].' + @Instance_Name +
> '.NomBase.dbo.MaTable'

> DECLARE mon_curseur CURSOR FOR
> SELECT Champ
> FROM @nomTable
> WHERE Champ2 = 100

> mais j'obtiens un message d'erreur qui me demande de d�clarer la
> variable @nomTable (alors qu'elle est d�j� d�cla r�e).

> Ma syntaxe est elle correcte ? Y a t-il un moyen de r�aliser le
> traitement en utilisant le curseur tel que je le d�clare, ou fau t-il
> passer par une autre proc�dure stock�e qui acc�d erait aux donn�es du
> serveur distant ?

> Merci de votre aide.




DECLARE @nomTable AS VARCHAR(200)
Declare @object varchar(100) declare @tablename varchar(100) declare
@statement

SET @nomTable = '[' + @ServerName + '].' + @Instance_Name
+'.NomBase.dbo.MaTable'
SELECT @statement = 'DECLARE mon_curseur CURSOR global FOR SELECT
Champ FROM '+@nomTable+' WHERE Champ2 = 100 '
EXEC(@statement)
open curObjects fetch next from curObjects into @object
while (@@fetch_status = 0)
begin .....
...
Publicité
Poster une réponse
Anonyme