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 :

[MSSQLServer 2000][Proc.Stockées] Exécution d'une procédure


Sujet :

MS SQL Server

  1. #1
    Expert éminent
    Avatar de Ditch
    Inscrit en
    Mars 2003
    Messages
    4 160
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mars 2003
    Messages : 4 160
    Points : 9 634
    Points
    9 634
    Par défaut [MSSQLServer 2000][Proc.Stockées] Exécution d'une procédure
    Bonjour.

    Je n'ai pas trouvé mon bonheur à l'aide de la fonction rechercher et encore moins dans les tutos qui soit dit en passant, me sont d'un tres grand secours... Sauf dans ce cas

    En me basant sur les tutos:
    j'ai créé une procédure stockée en SqlServer 2000 et je veux la tester...

    Voici ce que j'ai trouve dans le tuto:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DECLARE @RetourOK bit
    EXEC(SP_SYS_DB_TRANSACTION 127, @RetourOK OUTPUT)
    SELECT @RetourOK
    Voila ce que j'essaye de faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    EXEC (AspF_Proc_MsgsPriv_Add 'Test', 'AutreTest', 'TestItem', ' TestSub')
    avec comme entete de procédure:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CREATE PROCEDURE AspF_Proc_MsgsPriv_Add 
    	@Sender VARCHAR(10),
    	@Recipient VARCHAR(10),
    	@Item TEXT,
    	@Subject TEXT
    AS
    mais vous vous en doutez, cela ne marche pas
    L'erreur est la suivante: Erreur de syntaxe

    Quelqu'un peut me dire pourquoi?

  2. #2
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Points : 4 414
    Points
    4 414
    Par défaut
    En fait le problème vient de la manipulation des données de types Text.
    Si tu n'as pas des contraintes d'utilisations des types de données Text, utilises seulement les varchar ou char car la manipulation des types de données text reqiert des fonctions très particulières.

  3. #3
    Expert éminent
    Avatar de Ditch
    Inscrit en
    Mars 2003
    Messages
    4 160
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mars 2003
    Messages : 4 160
    Points : 9 634
    Points
    9 634
    Par défaut
    TEXT permettait d'avoir un texte "infini", je dois mette un VARCHAR(10000000)?

  4. #4
    Membre averti
    Inscrit en
    Août 2002
    Messages
    354
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 354
    Points : 398
    Points
    398
    Par défaut
    Slt,

    le probleme ne vient pas des champs text, il vient parenthese dans ton exec.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    EXEC AspF_Proc_MsgsPriv_Add 'Test', 'AutreTest', 'TestItem', ' TestSub'
    il ne faut pas mettre de parentheses quand tu executes une proc stock; les parentheses sont pour executer du sql dynamique.

    a+

  5. #5
    Expert éminent
    Avatar de Ditch
    Inscrit en
    Mars 2003
    Messages
    4 160
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mars 2003
    Messages : 4 160
    Points : 9 634
    Points
    9 634
    Par défaut
    Effectivement, ce sont les () dans ce cas ci.

    Cependant dans un autre cas, SqlServer rale a cause des TEXT... Donc les deux m'ont bien aidé

  6. #6
    Expert éminent
    Avatar de Ditch
    Inscrit en
    Mars 2003
    Messages
    4 160
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mars 2003
    Messages : 4 160
    Points : 9 634
    Points
    9 634
    Par défaut
    Je reviens à l'attaque et je complète mon message précédent:

    Voici l'erreur que j'ai:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Erreur 409: L'opération assignment operator ne peut pas prendre le type de données text comme argument. L'opération assignment operator ne peut pas prendre le type de données text comme argument.
    avec la procédure suivante:
    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
    25
    26
    27
    28
    CREATE PROCEDURE AspF_Proc_MsgsPriv_ReadOne
    	@Id INT,
    	@Sender VARCHAR(10) OUT,
    	@Item TEXT OUT,
    	@Subject TEXT OUT,
    	@OK BIT = 0 OUTPUT   
    AS
    DECLARE @ErrMsg VARCHAR(128)
    -- Id non passé
    IF @Id IS NULL OR @Id=0
    BEGIN
    	SET @ErrMsg = 'Id must be initialized'
    	GOTO LBL_ERROR
    END
    -- Lecture dans la table
    SELECT @Sender=Sender, @Item=Item, @Subject=Subject
    FROM AspF_PrivMsgs
    WHERE IdMessage=@Id;
    IF @@Error<>0
    BEGIN
    	SET @ErrMsg= 'Erreur lors de l''insertion des données'
    	GOTO LBL_ERROR
    END 
    RETURN @Ok
    -- Gestion des erreurs
    LBL_ERROR:
    RAISERROR (@ErrMsg, 16, 1)
    GO

  7. #7
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Points : 4 414
    Points
    4 414
    Par défaut
    Citation Envoyé par Ditch
    TEXT permettait d'avoir un texte "infini", je dois mette un VARCHAR(10000000)?
    Un varchar(8000)

  8. #8
    Expert éminent
    Avatar de Ditch
    Inscrit en
    Mars 2003
    Messages
    4 160
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mars 2003
    Messages : 4 160
    Points : 9 634
    Points
    9 634
    Par défaut
    Un TEXT c'est 8000 caracteres max? Merci en tout cas

  9. #9
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Points : 4 414
    Points
    4 414
    Par défaut
    Tout de même, nous pouvons bay passer les parameters OUTPUT en les remplaçons par un Select :

    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
    25
    CREATE PROCEDURE AspF_Proc_MsgsPriv_ReadOne 
       @Id INT, 
       @OK BIT = 0 OUTPUT    
    AS 
    DECLARE @ErrMsg VARCHAR(128) 
    -- Id non passé 
    IF @Id IS NULL OR @Id=0 
    BEGIN 
       SET @ErrMsg = 'Id must be initialized' 
       GOTO LBL_ERROR 
    END 
    -- Lecture dans la table 
    SELECT Sender, Item, Subject 
    FROM AspF_PrivMsgs 
    WHERE IdMessage=@Id; 
    IF @@Error<>0 
    BEGIN 
       SET @ErrMsg= 'Erreur lors de l''insertion des données' 
       GOTO LBL_ERROR 
    END 
    RETURN @Ok 
    -- Gestion des erreurs 
    LBL_ERROR: 
    RAISERROR (@ErrMsg, 16, 1) 
    GO
    Dès lors, un appel du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AspF_Proc_MsgsPriv_ReadOne  1
    Peut te renvoyer ce que tu attends.

  10. #10
    Expert éminent
    Avatar de Ditch
    Inscrit en
    Mars 2003
    Messages
    4 160
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mars 2003
    Messages : 4 160
    Points : 9 634
    Points
    9 634
    Par défaut
    Dans ce cas, cela va me renvoyer quoi?

    Imaginons qu'actuellement je fais un "SELECT Col1, Col2 FROM Table1", comment puis je faire pour le passer en procédure stockée?

    Je dois pouvoir afficher les valeurs que je récupère.

  11. #11
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Points : 4 414
    Points
    4 414
    Par défaut
    Pas de problèmes du fait de l'abscence des OUTPUT.
    Le code ci-dessous s'en charge.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT Sender, Item, Subject 
    FROM AspF_PrivMsgs 
    WHERE IdMessage=@Id;
    En tout cas vous aurez toujours vos trois valeurs de retours
    Sender, Item et Object.

    Avez vous testez la procedure en question ?

  12. #12
    Expert éminent
    Avatar de Ditch
    Inscrit en
    Mars 2003
    Messages
    4 160
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mars 2003
    Messages : 4 160
    Points : 9 634
    Points
    9 634
    Par défaut
    Cependant je ne fais pas de SELECT sur la clé primaire.

    Si je récupère plusieurs lignes, est ce possible?
    De tte facon, je pense que je vais adapter ma méthode de travail en conséquence mais c'est par curiosité.

  13. #13
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Points : 4 414
    Points
    4 414
    Par défaut
    Puis que le select te renvoie une table alors pas de problème.
    En tout cas ca marche parfaitement bien !!!!

  14. #14
    Expert éminent
    Avatar de Ditch
    Inscrit en
    Mars 2003
    Messages
    4 160
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mars 2003
    Messages : 4 160
    Points : 9 634
    Points
    9 634
    Par défaut
    Il me semblait avoir lu quelque part que ce n'étais pas possible d'utiliser les tableaux en procédures stockées sous SqlServer... Je teste cela demain.

    Merci pour tout

  15. #15
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Points : 4 414
    Points
    4 414
    Par défaut
    Citation Envoyé par Ditch
    Il me semblait avoir lu quelque part que ce n'étais pas possible d'utiliser les tableaux en procédures stockées sous SqlServer... Je teste cela demain.

    Merci pour tout
    J'ai dit qu'il retournait une table pas un tableau qui n'existe pas en SQL Server !

  16. #16
    Expert éminent
    Avatar de Ditch
    Inscrit en
    Mars 2003
    Messages
    4 160
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mars 2003
    Messages : 4 160
    Points : 9 634
    Points
    9 634
    Par défaut
    Ok merci

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 15/09/2016, 08h50
  2. Réponses: 4
    Dernier message: 02/11/2009, 16h22
  3. Exécution d'une procédure stockée sous sql server 2000
    Par amirad dans le forum Développement
    Réponses: 2
    Dernier message: 27/04/2009, 09h50
  4. Exécution d'une procédure stockée dans Sql
    Par Pascalp dans le forum Access
    Réponses: 4
    Dernier message: 01/09/2006, 11h47
  5. Accès non autorisé à l'exécution d'une procédure stockée
    Par celine33 dans le forum Bases de données
    Réponses: 6
    Dernier message: 11/01/2006, 10h27

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