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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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.

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, 17h45
  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, 16h46
  3. Réponses: 7
    Dernier message: 03/05/2007, 12h44
  4. Création de procédure stocké erreur
    Par ran_hery dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 22/02/2007, 09h39
  5. [Procédure stockée] Erreur 1305
    Par SSJ17Vegeta dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 18/11/2005, 02h38

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