Problème création de procédure stockée

Résolu
djobert Messages postés 4 Date d'inscription lundi 1 décembre 2008 Statut Membre Dernière intervention 9 janvier 2009 - 8 janv. 2009 à 21:54
SQLpro Messages postés 35 Date d'inscription samedi 17 novembre 2007 Statut Membre Dernière intervention 8 février 2012 - 14 janv. 2009 à 22:06
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /??>








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 :

















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 :  






















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







      INSERTINTO V3R.ADM.VPlans_Complets (NO_PLAN, titre, Secteurs)VALUES(@NO_PLAN, @titre,coalesce(@Concatenated,'')







 







      FETCHNEXTFROM 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'.

-djobert-

3 réponses

ed73 Messages postés 276 Date d'inscription lundi 8 septembre 2008 Statut Membre Dernière intervention 15 avril 2013 2
9 janv. 2009 à 11:30
Salut,

DELETE FROMV3R.ADM.VPlans_Complets

au lieu de  

DELETE *FROMV3R.ADM.VPlans_Complets

FETCH cursorSourceTable INTO @NO_PLAN, @titre<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>

au lieu de

FETCHNEXTFROMcursorSourceTable INTO @NO_PLAN, @titre

ed73
3
djobert Messages postés 4 Date d'inscription lundi 1 décembre 2008 Statut Membre Dernière intervention 9 janvier 2009
9 janv. 2009 à 17:49
Salut, ma procédure fonctionne très bien maintenant! par contre, je veux qu'elle s'effectue à tous les jours à 6h du matin. Je voudrais utiliser SQL Agent, mais à date, tous mes efforts ont été infructueux et cela ne fonctionne pas...

C'est lorsque j'arrive dans l'Agent SQL, dans l'onglet Étapes... je dois en créer une nouvelle, mais je ne sais pas comment faire. Je n'avais jamais utilisé l'Agent SQL avant. Ma procédure se trouve dans la BD V3R, et elle se nomme dbo.MergeMyTwoTables.

Quel type d'étape dois-je prendre pour exécuter ma procédure? Je croyais prendre une Script Transact-SQL (T-SQL), mais quelle commande dois-je tapper?? je croyais que Exec MergeMyTwoTables fonctionnerait...

-djobert-
0
SQLpro Messages postés 35 Date d'inscription samedi 17 novembre 2007 Statut Membre Dernière intervention 8 février 2012 1
14 janv. 2009 à 22:06
EXEC dbo.MergeMyTwoTables

En prenant une étape de type Transact SQL

A +

Frédéric BROUARD - SQLpro - MVP SQL Server
Spécialiste SQL, SGBDR, modéles de données
SQL & SGBDR  http://sqlpro.developpez.com/
Expert SQL Server : http://www.sqlspot.com
audits - optimisation - tuning - formatio
0
Rejoignez-nous