Bonjour je dois ecrire une fonction qui renvoit une table fabriquée dans la fonction...un peu comme une vue,
je dois absolument utiliser un curseur mais cela me pose probleme.
Est il impossible d utiliser un curseur dans une fonction sql server?
Bonjour je dois ecrire une fonction qui renvoit une table fabriquée dans la fonction...un peu comme une vue,
je dois absolument utiliser un curseur mais cela me pose probleme.
Est il impossible d utiliser un curseur dans une fonction sql server?
voici mon code
et voici le message d erreur que je me prend
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 CREATE FUNCTION dbo.Test () RETURNS TABLE AS BEGIN DECLARE @t INT, @m INT DECLARE tCURS CURSOR FOR SELECT t, m FROM tTable OPEN tCURS FETCH tCURS INTO @t, @m WHILE @@FETCH_STATUS = 0 BEGIN PRINT @t FETCH tCURS INTO @t, @m END CLOSE tCURS DEALLOCATE tCURS RETURN (select * from tTable)--histoire de renvoyer qq chose pour le moment END
Erreur 170: Line 25 : incorrect syntax near 'BEGIN'
Bonjour,
Je ne suis pas allé plus loin, mais je pense qu'il y a une erreur dès la ligneIl faut mettre la table dans une variable et la décrire ! Par exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part RETURNS TABLE AS
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 RETURNS @RESU TABLE ( t int, m int ) AS
oui et c est bien la mon probleme...
je ne connais pas la structure de la table et mon curseur doit me permettre de parcourir une autre table afin de construire une chaine de caractere qui constituera la requete executée pour le retour...
Ouhlala ! Ca me paraît compliqué cette histoire.
Mais tu as quand même cette table tTable. Tu la connais, non ?
tout a fait je la connais c est elle que je vais intérroger, pour chaque enregistrement qui me sera retourner, ma requete de retour sera modifiée, en fait je vais fabriquer une requete qui aliase plusieurs fois la meme table afin d avoir autant de fois la colonne qu il y aura d enregistrement (avec des where différents évidemment)
Partager