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

MS SQL Server Discussion :

Procédure stockée - insertion >> Merci Mr Youssef


Sujet :

MS SQL Server

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 91
    Points : 65
    Points
    65
    Par défaut Procédure stockée - insertion >> Merci Mr Youssef
    Bonjour, j'apprends les sp...
    Là j'ai un pb :
    Je dois insérer à la volée dans +eures tables "Tampon" des données
    des tables "mères". ==> ok

    Mais je veux insérer un ID fourni dans la sp (voir --Copy AMC)
    dans sp ci dessous.


    CREATE PROCEDURE sp_CopyAllTemp
    (
    @IID int
    )
    AS BEGIN

    -- Retour TempID
    DECLARE @TempID int

    --Lock fiche
    UPDATE [TI_Individus] SET IsLock=1 WHERE IID=@IID;

    --Copy fiche to T_Temp
    INSERT INTO [Temp_TI_Individus]
    (IIDSource, EID, ISID, IGID, Nom, Prenom, Statut, Fonction, Tel, Fax, Web, IPRID, VIP, IABoNI, ITanID, IAboNiStart, IAboNiEnd, IAboNiRelance)
    SELECT
    B.IID, B.EID, B.ISID, B.IGID, B.Nom, B.Prenom, B.Statut, B.Fonction, B.Tel, B.Fax, B.Web, B.IPRID, B.VIP, B.IABoNI, B.ITANID, B.IAboNiStart, B.IAboNiEnd, B.IAboNiRelance
    FROM [TI_Individus] B WHERE B.IID=@IID;

    --Get TempID
    SET @TempID=(SELECT SCOPE_IDENTITY())

    --Copy AMC
    /*Celle ci ok mais pas insertion de @TempID)
    INSERT INTO [Temp_TI_AMC] (IIDSource, IMCID, IAMCCoord, IAMCComm)
    SELECT B.IID, B.IMCID, B.IAMCCoord, B.IAMCComm FROM [TI_AMC] B WHERE B.IID=@IID;
    */

    --Fonctionne pas : synthaxe pourave mais je vois pas. comment copier à la volée
    INSERT INTO [Temp_TI_AMC] (IID, IIDSource, IMCID, IAMCCoord, IAMCComm)
    @TempID, SELECT B.IID, B.IMCID, B.IAMCCoord, B.IAMCComm FROM [TI_AMC] B WHERE B.IID=@IID;

    --Copy CentInt
    INSERT INTO [Temp_TI_CentInt] (IIDSource, ICIID, ICenIntComm)
    SELECT B.IID, B.ICIID, B.ICenIntComm FROM [TI_CentInt] B WHERE B.IID=@IID;

    --Copy Fonc Second
    INSERT INTO [Temp_TI_FonctionsSecond] (IIDSource, IFSFonction, IFSISID)
    SELECT B.IID, B.IFSFonction, B.IFSISID FROM [TI_FonctionsSecond] B WHERE B.IID=@IID;

    --Copy VIP
    INSERT INTO [Temp_TI_VIP] (IIDSource, IVIPTitre, IVIPPeriode, IVIPOrganisme)
    SELECT B.IID, B.IVIPTitre, B.IVIPPeriode, B.IVIPOrganisme FROM [TI_VIP] B WHERE B.IID=@IID;

    --Return TempID
    RETURN @TempID

    END
    GO

    Merci de vos conseils ou pistes.
    Samish
    Samish, rentier et futur retraité
    Padawan #7896358

  2. #2
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 70
    Points : 84
    Points
    84
    Par défaut Compteur ?
    Bonjour,
    Si j'ai bien compris, le Champ IID est un compteur et donc on ne peut pas y insérer une valeur directement. Et aussi tu as mis @TempId avant le select alors qu'il faut le mettre dans le select. Essaye cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    set identity_insert Temp_TI_AMC on  -- si c'est un compteur
    INSERT INTO [Temp_TI_AMC] (IID, IIDSource, IMCID, IAMCCoord, IAMCComm)
      SELECT @TempID, B.IID, B.IMCID, B.IAMCCoord, B.IAMCComm
        FROM [TI_AMC] B
        WHERE B.IID=@IID
    set identity_insert Temp_TI_AMC off  -- si c'est un compteur

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 91
    Points : 65
    Points
    65
    Par défaut ok, mais non
    Bonsoir,

    1/Merci de ton aide

    2/ Ca passe pas.
    Non, IID n'est pas un compteur, mais l'ID de la fiche temporaire de l'individu
    C'est pourquoi je recup son ID.

    Le process :
    a- copie de la fiiche de [TI_Individus] vers [TI_Temp_Individus]
    b- recup de l'id de la nvelle fiche ds [TI_Temp_Individus] =>> @TempID
    c- copie des fiches des tables liées à [TI_Individus] dans [Temp_TI_XXXX]
    avec insertion de IIID aka @TempID de [TI_Temp_Individus] ET IIDSource de [TI_Individus]

    En effet comme il peut y avoir +eures fiches "Tampon" d'un individu, je dois :
    - indiquer l'ID de la fiche individu "Tampon" ==> IID de [TI_Temp_Individus]
    - indiquer l'ID de la fiche individu "Mère" ==> IIDSource de [TI_Individus]

    J'avais pensé à un truc du genre - "un pseudo champ"- :

    INSERT INTO [Temp_TI_AMC] (IID, IIDSource, IMCID, IAMCCoord, IAMCComm)
    SELECT NewID=@TempID, B.IID, B.IMCID, B.IAMCCoord, B.IAMCComm
    FROM [TI_AMC] B
    WHERE B.IID=@IID

    Je continue de chercher...
    Samish
    Samish, rentier et futur retraité
    Padawan #7896358

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 91
    Points : 65
    Points
    65
    Par défaut 10e10 EXCUSES
    ok, en virant
    set identity_insert Temp_TI_AMC off/off
    ca passe très bien.

    MERCI !!
    Samish, rentier et futur retraité
    Padawan #7896358

  5. #5
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 70
    Points : 84
    Points
    84
    Par défaut Exactement le problème ?
    Je suis désolé, j'ai essayé depuis tout à l'heure de voir que pourrait être le problème mais en vain.

    Le NewId est un NewId et je ne crois pas qu'on puisse y mettre quelque chose.

    Est ce que le système te sort une erreur à la syntaxe que tu as indiqué ou le résultat n'est pas le bon. Quel est la réaction du système ? Cela pourrait m'aider à trouver une piste.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 91
    Points : 65
    Points
    65
    Par défaut k merci c ok ;)
    Mercin, nos posts ont dû se croiser.
    C'est bon

    Merci à toi
    Samish
    Samish, rentier et futur retraité
    Padawan #7896358

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

Discussions similaires

  1. [MySQL] procédure stocké insert
    Par tawba dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 13/10/2009, 10h14
  2. Procédures stockées INSERT.
    Par notfoune dans le forum MFC
    Réponses: 2
    Dernier message: 29/11/2005, 10h35
  3. procédure stockée insert multiple
    Par gigi34 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 20/09/2005, 10h37
  4. [Procédure stockée]Insert avec renvoi clé primaire?
    Par busmik dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 26/08/2004, 16h14
  5. Procédure stocké:Insert et renvoie de la clé primair
    Par caramel dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 17/04/2003, 09h34

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