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 :

[SQL Server 2005] [Procédure stockée] Paramètre uniqueidentifier toujours Null ?


Sujet :

Développement SQL Server

  1. #1
    Membre du Club
    Inscrit en
    Novembre 2004
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 58
    Points : 62
    Points
    62
    Par défaut [SQL Server 2005] [Procédure stockée] Paramètre uniqueidentifier toujours Null ?
    Bonjour,

    je sèche sur un problème qui commence à m'énerver...
    J'ai une procédure stockée comme ci-dessous :

    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
    19
    20
    21
    22
    23
    CREATE PROCEDURE [dbo].[save_or_update_row]
    (
    @id_row uniqueidentifier output,
    @field1 int,
    @field2 nvarchar(100),
    @field3_date datetime = null,
    @email nvarchar(100) = null
    )
     AS
    BEGIN
        IF @id_row is not null
        BEGIN
            PRINT 'THIS IS AN UPDATE'
            -- ...
            -- ...
        END
        ELSE
        BEGIN
            PRINT 'THIS IS AN INSERT'
            -- ...
            -- ...
        END
    END
    Quand je la teste, le paramètre @id_row est toujours null dans la 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
    DECLARE @id_row_value uniqueidentifier
    SELECT @id_row_value = Convert(uniqueidentifier,'342850fc-ada0-46b0-b55b-e5b3d21646e1')
     
    IF @id_row_value is not null
    BEGIN
    	PRINT 'EXIST'
    END 
    ELSE
    BEGIN
    	PRINT 'NOT EXIST'
    END
     
    EXEC	@return_value = [dbo].[save_or_update_row]
    		@id_row =@id_row_value OUTPUT,
    		@field1 = 15,
    		@field2 = ' test only',
    		@field3_date = null,
    		@email = null
    Le résultat de ce test est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    EXIST
    THIS IS AN INSERT
    Donc je passe toujours dans le cas ou @id_row est null dans la procédure stockée et je ne comprends pas... c'est le OUTPUT qui me pose problème ?


    Merci beaucoup déjà d'avoir lu mon problème... si quelqu'un a une idée de la solution... je suis preneur

  2. #2
    Membre actif
    Inscrit en
    Février 2009
    Messages
    224
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 224
    Points : 269
    Points
    269
    Par défaut
    Bonjour,
    Je viens d'exécuter vos différents scripts,à savoir, création de la procédure:
    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
    19
    20
    21
    22
    23
    24
     
    CREATE PROCEDURE [dbo].[save_or_update_row]
    (
    @id_row uniqueidentifier output,
    @field1 int,
    @field2 nvarchar(100),
    @field3_date datetime = NULL,
    @email nvarchar(100) = NULL
    )
     AS
    BEGIN
        IF @id_row IS NOT NULL
        BEGIN
            PRINT 'THIS IS AN UPDATE'
            -- ...
            -- ...
        END
        ELSE
        BEGIN
            PRINT 'THIS IS AN INSERT'
            -- ...
            -- ...
        END
    END
    et exécution du test (j'ai apporté une modification sur l'appel de la procédure car elle ne retourne pas de valeur)
    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
    19
     
    DECLARE @id_row_value uniqueidentifier
    SELECT @id_row_value = Convert(uniqueidentifier,'342850fc-ada0-46b0-b55b-e5b3d21646e1')
     
    IF @id_row_value IS NOT NULL
    BEGIN
    	PRINT 'EXIST'
    END 
    ELSE
    BEGIN
    	PRINT 'NOT EXIST'
    END
     
    EXEC	[dbo].[save_or_update_row]
    		@id_row =@id_row_value OUTPUT,
    		@field1 = 15,
    		@field2 = ' test only',
    		@field3_date = NULL,
    		@email = NULL
    et j'obtiens le résultat suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    EXIST
    THIS IS AN UPDATE
    Donc de mon coté tout semble OK

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

Discussions similaires

  1. [ODBC] [SQL Server 2005] Procédure stockée
    Par geo54 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 08/06/2010, 09h48
  2. SQL SERVER 2005 procédure stockée
    Par elrick richese dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 18/03/2009, 11h54
  3. [SQL-SERVER 2005]Procédure stockée avec table temporaire
    Par mathieu44800 dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 03/08/2007, 14h18
  4. [SQL Server 2005] Procédure stockée dynamique ?
    Par nitrous007 dans le forum MS SQL Server
    Réponses: 13
    Dernier message: 20/12/2006, 13h54

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