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

PHP & Base de données Discussion :

Procédure stockée : erreur sur mssql_execute


Sujet :

PHP & Base de données

  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Août 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 483
    Par défaut Procédure stockée : erreur sur mssql_execute
    bonjour

    J'ai un petit soucis avec un appel à une 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
    19
    20
    21
    22
    23
    24
    25
    26
    set ANSI_NULLS ON
    set QUOTED_IDENTIFIER ON
    GO
    -- =============================================
    -- Author:		<>
    -- Create date: <21/08/2008>
    -- Description:	<>
    -- =============================================
    ALTER PROCEDURE [dbo].[Select_TACHE] 
    	-- Add the parameters for the stored procedure here
    	@id_TYPE_BON int
    AS
    BEGIN
    	-- SET NOCOUNT ON added to prevent extra result sets from
    	-- interfering with SELECT statements.
    	SET NOCOUNT ON;
     
        -- Insert statements for procedure here
     
    SELECT lettre, intitule, tache_type
    FROM DEV_TACHE
    WHERE id_TACHE IN 
    		(SELECT id_TACHE
    		FROM  DEV_REL_BON_TACHE
    		WHERE DEV_REL_BON_TACHE.id_TYPE_BON=@id_TYPE_BON)
    END
    L'appel à la procédure dans PHP :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    // connexion à la base mssql => $connexion_base = identifiant de lien MS SQL
    $connexion_base=mssql_connect($sql_serveur,$sql_user,$sql_passwd) 
    or die ("impossible de se connecter à SQL Server sur $sql_serveur");
     
    // Initilisation de la procédure stockée.
    // mssql_init("nom de la procedure stockée sans le dbo", lien issu du mssql_connect)
    $req_preview=mssql_init("Select_TACHE",$connexion_base);
     
    // Initilisation des variables.
    mssql_bind($req_preview,"@id_TYPE_BON",$type_bon,SQLINT1) or die ("erreur initialisation de variable") ;
     
    $result_preview=mssql_execute($req_preview);
    J'obtiens le message d'erreur :

    Warning : mssql_execute() [function.mssql-execute] : stored procedure execution failed.

    J'utilise SQLserver2005 et l'execution depuis le SGBD ne leve pas d'erreur.

    en vous remerciant d'avance

  2. #2
    Membre très actif
    Profil pro
    Inscrit en
    Août 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 483
    Par défaut
    re bonjour

    En relisant le code j'ai remarqué que j'ai oublié de sélectionner la Bdd :

    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
    // connexion à la base mssql => $connexion_base = identifiant de lien MS SQL
    $connexion_base=mssql_connect($sql_serveur,$sql_user,$sql_passwd) 
    or die ("impossible de se connecter à SQL Server sur $sql_serveur");
    
    mssql_select_db ($sql_table,$connexion_base)
    or die("erreur de connection à la base de données $bdd");
    
    // Initilisation de la procédure stockée.
    // mssql_init("nom de la procedure stockée sans le dbo", lien issu du mssql_connect)
    $req_preview=mssql_init("Select_TACHE",$connexion_base);
    
    // Initilisation des variables.
    mssql_bind($req_preview,"@id_TYPE_BON",$type_bon,SQLINT1) or die ("erreur initialisation de variable") ;
    
    $result_preview=mssql_execute($req_preview);
    Cependant cela ne résoud pas le problème est j'ai toujours le même message d'erreur.

    ++

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Août 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 483
    Par défaut
    re re bonjour

    je viens de faire un test avec une query :

    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
     
    $tableau=array();
     
    // connexion à la base mssql => $connexion_base = identifiant de lien MS SQL
    $connexion_base=mssql_connect($sql_serveur,$sql_user,$sql_passwd) 
    or die ("impossible de se connecter à SQL Server sur $sql_serveur");
     
    mssql_select_db ($sql_table,$connexion_base)
    or die("erreur de connection à la base de données $bdd");
     
    $result = mssql_query("
    SELECT lettre, intitule, tache_type
    FROM DEV_TACHE
    WHERE id_TACHE IN 
    		(SELECT id_TACHE
    		FROM  DEV_REL_BON_TACHE
    		WHERE DEV_REL_BON_TACHE.id_TYPE_BON=$type_bon) ",
    		$connexion_base)
    		or die (mssql_error());
     
    while($val=mssql_fetch_array($result,MSSQL_ASSOC))
    	{
       $tableau[]=$val;
    	}
     
    print_r($tableau);
    et cela fonctionne correctement.

    Qu'est-ce qui pourrait empêcher de fonctionner les procédures stockées ?

    merci d'avance pour votre aide.

  4. #4
    Membre très actif
    Profil pro
    Inscrit en
    Août 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 483
    Par défaut
    Bonjour,

    voici quelque information supplémentaire concernant la configuration du serveur :

    - apache-2.0.59-3tr.i586.rpm

    -php-5.2.4-1tr.i586.rpm
    php-gd-5.2.4-1tr.i586.rpm
    php-ldap-5.2.4-1tr.i586.rpm
    php-mssql-5.2.4-1tr.i586.rpm
    php-mysql-5.2.4-1tr.i586.rpm
    php-mysqli-5.2.4-1tr.i586.rpm
    php-pear-1.4.10-2tr.i586.rpm

    -freetds-0.64-2tr.i586.rpm

    Il s'agit des modules tournant actuellement sur le serveur web Trustix. Si quelqu'un a une idée qui pourrait être lié au module installer sur le serveur.

    Mais j'ai toujours des doutes concernant ma syntaxe

    J'ai besoin de vos commentaire constructif

    cordialement.

  5. #5
    Membre très actif
    Profil pro
    Inscrit en
    Août 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 483
    Par défaut
    Bonjour à tous

    J'ai effectué un test avec easyphp 2.0 b en local en activant l'extension mssql.

    Donc ma syntaxe est correcte.

    Le problème semble venir de la configuration php / apache ou freetds du serveur.

    Je suis en train d'explorer la syntaxe en utilisant la commande exec du TSQL avant de devoir toucher la configuration du serveur.

    Si qqn avait des informations concernant la configuration minimal d'un serveur web pour qu'il puisse prendre en charge correctement l'utilisation des procedure stocker via un mssql_execute je suis preneur.

    je retourne tester la commande EXEC

    Je vous tien au courant.

    ++

  6. #6
    Membre très actif
    Profil pro
    Inscrit en
    Août 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 483
    Par défaut
    bonjour à tous,

    Apperemment en utilisant la commande EXEC cela semble fonctionner.

    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
    $tableau=array();
     
    // connexion à la base mssql => $connexion_base = identifiant de lien MS SQL
    $connexion_base=mssql_connect($sql_serveur,$sql_user,$sql_passwd) 
    or die ("impossible de se connecter à SQL Server sur $sql_serveur");
     
    mssql_select_db ($sql_table,$connexion_base)
    or die("erreur de connection à la base de données $bdd");
     
    $result=mssql_query("exec Select_TACHE $type_bon",$connexion_base);
     
    while($val=mssql_fetch_array($result,MSSQL_ASSOC))
    	{
       $tableau[]=$val;
    	}
    Me pause juste encore une question concernant l'association des paramètres d'entrés quand il y en aura plusieurs a traiter mais je verrai cela plus tard.

    voili voilou

    ++ all

    Je ne met pas le post comme résolu car j'aimerai connaitre encore la configuration minimal permettant d'executer les procédures stockée avec mssql_execute.

  7. #7
    Membre très actif
    Profil pro
    Inscrit en
    Août 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 483
    Par défaut
    plop plop

    Je me réponds à moi-même concernant l'ajout de paramètre dans un appel à une procedure stocké avec EXEC :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    $result=mssql_query("exec nom_de_la_Procedure_stockée 'param1','param2','param3','param4','param_X'",$connexion_base)or die ("erreur de requete");
    Suffit en fait de mettre les paramètres entre cotes séparé par des virgules.

    Si ça peut aider.

    Par contre toujours pas trouver de solution pour executer avec mssql_execute.

    ++

  8. #8
    Invité de passage
    Inscrit en
    Avril 2009
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 1
    Par défaut
    Bonjour, je suis actuellement sur la reprise d un code qui n a pas ete fait par moi et je rencontre le meme probleme. je tente d executer une requete stocke sur la bdd. je suis presque oblige de passer par mssql_execute car le fait de changer cette facon de faire m obligerai a tout changer. Je suis sous SAL serveur 2005. le probleme c est que je suis dans une universite et je me demande si les droits d ecritures n entrent pas en jeu, le probleme c est qu en faisant comme tu as fait, cela marche donc je ne vois pas comment faire... Si quelqu un peu m aider, je suis ouvert, je peux meme vous communiquer d autres infos si besoin est

  9. #9
    Membre très actif
    Profil pro
    Inscrit en
    Août 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 483
    Par défaut
    Bonjour,

    SAL server 2005 ? A je suis bête tu dois être en qwerty.......

    Personnellement j'ai utilisé la méthode présentée dans le poste sous MsSql 2005.

    Quel problème rencontres-tu, quels code utilises-tu et quels messages d'erreur obtiens-tu?

    Concernant les droits sur la base de donnée il faut que tu vois avec ton administrateur de bdd si il y en a un.

    ++

Discussions similaires

  1. Procédure stockée : erreur de création
    Par jeromesteffe dans le forum SQL Procédural
    Réponses: 7
    Dernier message: 21/06/2007, 18h45
  2. [procédure stockée] Erreur dans un while
    Par LE NEINDRE dans le forum MS SQL Server
    Réponses: 11
    Dernier message: 19/06/2007, 17h46
  3. Réponses: 7
    Dernier message: 03/05/2007, 13h44
  4. Création de procédure stocké erreur
    Par ran_hery dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 22/02/2007, 10h39
  5. [Procédure stockée] Erreur 1305
    Par SSJ17Vegeta dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 18/11/2005, 03h38

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