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 :

Utilisation d'une séquence dans une procédure stockée


Sujet :

Développement SQL Server

  1. #1
    Membre du Club
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Juillet 2010
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2010
    Messages : 88
    Points : 56
    Points
    56
    Par défaut Utilisation d'une séquence dans une procédure stockée
    Bonjour à toutes et tous,

    Je fais appel à votre aide car je sèche littéralement

    Aujourd'hui j'ai une application développée en Delphi qui fonctionne avec Firebird.
    Je dois effectuer une migration vers MSSQLServer 2012 voire 2016.
    Rien de bien méchant car ma base source (Firebird) n'embarque que des tables de données avec 4 types de champs standards (integer, double précision, varchart et datetime)

    Seule particularité, j'ai utilisé un générateur (Firebird) qui est appelé via une procédure stockée sous la forme suivante SELECT * FROM NOM_STORED_PROC
    Sur SQLServer, j'ai créé une séquence. J'arrive à l'appeler pour obtenir la voaleur suivante.
    J'arrive à intégrer l'appel de la dans uns procédure stockée.
    Mais je n'arrive pas à appeler la procédure stockée sous la forme SELECT * FROM NOM_STORED_PROC. Je ne peux pas avoir un autre type d'appel.

    Quelqu'un pourrait il m'aider ?
    Par avance merci

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 763
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 763
    Points : 52 554
    Points
    52 554
    Billets dans le blog
    5
    Par défaut
    Pas besoin d'un proc stock :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    CREATE SEQUENCE SQC AS INT START WITH 1;
    GO
     
    SELECT NEXT VALUE FOR dbo.SQC;
    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Membre du Club
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Juillet 2010
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2010
    Messages : 88
    Points : 56
    Points
    56
    Par défaut
    Bonjour merci pour votre réponse
    J'avais bien cela et effectivement cela fonctionne très bien

    En Firebird , j'utilise une fonction GEN_ID qui ne renvoie la valeur du générateur (séquence en SQLsever) de la façon suivante GEN_ID(NUMVERSION, 1), ce qui me permet de l'utiliser directement dans un SELECT, INSERT, UPDATE, ou procédure stockée

    Par exemple pour un UPDATE je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE table1 SET  NUMVERSION = GEN_ID(INCNUMEVRSION, 1) WHERE yyyy = zzzz
    NUMVERSION = champ technique contenant la valeur unique
    GEN_ID = fonction du générateur qui va incrémenter le compteur INCNUMVERSION de 1 et renvoyer la valeur

    Comment faire en SQLServer pour conserver cette syntaxe ?

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 763
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 763
    Points : 52 554
    Points
    52 554
    Billets dans le blog
    5
    Par défaut
    Vous ne pouvez pas conserver cette syntaxe car elle est anormative. la norme SQL est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NEXT VALUE FOR [<schema>.]<sequence>
    Or FireBird ne respecte pas la norme SQL.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

Discussions similaires

  1. c# + dbml, utilisation d'une procédure stockée
    Par thor76160 dans le forum C#
    Réponses: 1
    Dernier message: 22/08/2010, 11h40
  2. Utilisation d'une Procédure Stockée avec BO
    Par kfmystik dans le forum Designer
    Réponses: 2
    Dernier message: 02/12/2008, 10h04
  3. Utilisation d'une procédure stockée dans un trigger
    Par CleeM dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 16/06/2008, 17h41
  4. utilisation d'une procédure stockée
    Par Klemsy78 dans le forum Bases de données
    Réponses: 3
    Dernier message: 22/08/2006, 14h05
  5. utilisation d'une procédure stockée
    Par Klemsy78 dans le forum Delphi
    Réponses: 3
    Dernier message: 22/08/2006, 14h05

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