Problème création Stored Procedure
Bonjour, je désir créer une procédure stockée, mais quelque chose accroche et ça ne fonctionne pas. Je vous fais la mise en situation, j'ai copié plus bas mon code, et j'ai aussi copié les 2 erreurs que SQL me sort.
Je tente de faire cela avec SQL Management Studio pour SQL Server 2005
J'ai 2 tables (qui sont en fait des vues)
-ADM.VPlans
Champs : NO_PLAN, titre
-ADM.VPlans_Secteurs
Champs : NO_PLAN, Secteur
« NO_PLAN » contient les mêmes numéros de plans que le champ « NO_PLAN » de ADM.VPlans, de sorte que pour chaque ligne de ADM.VPlans, je peux avoir dans ADM.VPlans_Secteurs n lignes, dépendamment si j'ai 0, 1 ou n « Secteur » différents pour un même NO_PLAN.
Mon but est d'avoir une table :
-ADM.VPlans_Complets
Champs : NO_PLAN, titre, Secteurs
« Secteurs » doit contenir la list des Secteurs, séparés par des virgules
Ex : (dsl si ce n'est pas tout à fait clair, mais la page d'édition du message ne prend pas en compte les Tabulations et les suites d'espaces... Vous avez le nom des tables, le nom des champs, et ensuite les données..)
Code:
1 2 3 4 5 6 7 8 9 10
| V3R.ADM.VPlans--|--V3R.ADM.VPlans_Secteur--|--V3R.ADM.VPlans_Complets
NO_PLAN---titre--|--NO_PLAN---Secteur---|--NO_PLAN---titre---Secteurs
1----------tata---|----1----------TR-----|-----1--------tata----TR,CAP
2----------titi---|----1----------CAP----|-----2--------titi------CAP
3----------toto---|----2----------CAP----|-----3--------toto-----TR,TRO
------------------|----3----------TR
------------------|----3----------TRO |
Voilà procédure stockée :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| CREATE PROCEDURE dbo.MergeMyTwoTables AS
DELETE * FROM V3R.ADM.VPlans_Complets
DECLARE @NO_PLAN int
DECLARE @titre varchar(1000)
DECLARE @Concatenated varchar(2000)
DECLARE cursorSourceTable CURSORFORSelect NO_PLAN, titre FROM V3R.ADM.VPlans ORDERBY NO_PLAN ASC
OPEN cursorSourceTable
FETCH NEXT FROM cursorSourceTable INTO @NO_PLAN, @titre
WHILE @@FETCH_STATUS <> - 1 BEGIN
--For this line, get all values from sub-lines and concatenate them
SELECT @Concatenated =null
SELECT @Concatenated =coalesce(@Concatenated +', ','')+cast(Secteur asvarchar(40))
FROM V3R.ADM.VPlans_Secteurs
WHERE NO_PLAN = @NO_PLAN
--Insert result in ADM.VPlans_Complets
INSERT INTO V3R.ADM.VPlans_Complets (NO_PLAN, titre, Secteurs)
VALUES (@NO_PLAN, @titre, coalesce(@Concatenated,'')
FETCH NEXTFROM cursorSourceTable INTO @NO_PLAN, @titre
END
CLOSE cursorSourceTable
DEALLOCATE cursorSourceTable
GO |
Et ensuite, je créerais une Tâche planifiée pour répéter la procédure plusieurs fois par jour avec la commande
Requête sql pour runner la stored proc:
Exec MergeMyTwoTables
Voilà les messages d'erreur que SQL me donne lorsque j'exécute ma procédure. Je ne comprend pas.
Msg 102, Niveau 15, État 1, Procédure MergeMyTwoTables, Ligne 3
Syntaxe incorrecte vers '*'.
Msg 156, Niveau 15, État 1, Procédure MergeMyTwoTables, Ligne 23
Syntaxe incorrecte vers le mot clé 'FETCH'.