IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement SQL Server Discussion :

Creation de séquence dynamiquement dans procedure stockée


Sujet :

Développement SQL Server

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    249
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 249
    Points : 111
    Points
    111
    Par défaut Creation de séquence dynamiquement dans procedure stockée
    Bonjour,
    Je veux pouvoir créer une séquence dynamiquement dans une procédure stockée en sql server 2012. Mon problème c'est que le nom de la séquence est égale au nom d'une colonne.
    Ci-dessous la requête que j'utilise et le message d'erreur reçu dès exécution d'une insertion.


    Procédure stockée
    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
     
     
    CREATE TRIGGER [dbo].[Numero] 
       ON  [dbo].[Table1] 
       AFTER INSERT
    AS 
    BEGIN
    	-- SET NOCOUNT ON added to prevent extra result sets from
    	-- interfering with SELECT statements.
    	SET NOCOUNT ON;
     
        -- Insert statements for trigger here
     
    	DECLARE  @NomColonne1Table1 varchar(60), @VarSequence Varchar(100)
    	SET @NomColonne1Table1 = (SELECT I.Nom FROM inserted I )	
    	SET @VarSequence = 'CREATE SEQUENCE [dbo].[' + @NomColonne1Table1 + ']  START WITH 0  INCREMENT BY 1  NO CACHE'
    	EXECUTE @varSequence
    END
    J'ai fait cet trigger et lorsque je fais une insertion:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO [dbo].[Table1]  (Nom) Values ('Toece')
    je reçois ce message d'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Msg*203, Niveau*16, État*2, Procédure*Numero, Ligne*23
    Le nom 'CREATE SEQUENCE [dbo].[Toece]  START WITH 0  INCREMENT BY 1  NO CACHE' n'est pas un identificateur valide.


    Comment procéder?

  2. #2
    Expert confirmé
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Points : 4 043
    Points
    4 043
    Par défaut
    ton trigger n'est pas ensembliste. Que se passe-t-il si tu insères plusieurs lignes ?
    Rudi Bruchez
    Rudi Bruchez EIRL, solutions MS SQL Server et NoSQL
    LinkedIn - [Outil libre de diagnostic SQL Server : Sql Trismegiste]
    LIVRES : Optimiser SQL Server -
    Microsoft SQL Server 2012 Security Cookbook
    - les bases de données NoSQL

    e-learning : LinkedIn Learning - Pluralsight

  3. #3
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    249
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 249
    Points : 111
    Points
    111
    Par défaut
    Bonsoir rudib,
    Thanks pour cette correction. Je vois que j'avais omis les parenthèses.
    En fait, l'enregistrement sur la table Table1 se fera ligne par ligne et ne dépassera jamais plus de 50 lignes. En fait c'est une table paramètre.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Gestion trigger dans procedure stockée
    Par jeremieviel dans le forum SQL
    Réponses: 6
    Dernier message: 20/01/2009, 16h05
  2. Erreur dans procedure stockées
    Par freud dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 10/07/2007, 11h13
  3. [debutant][ASE 12.5]print dans procedure stockée
    Par sly33 dans le forum Sybase
    Réponses: 6
    Dernier message: 21/05/2007, 17h41
  4. Réponses: 6
    Dernier message: 09/10/2006, 11h58
  5. Réponses: 3
    Dernier message: 19/04/2006, 18h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo