Discussion:
Procedure stockee syntaxe
(trop ancien pour répondre)
Narutobaka
2008-08-25 14:17:26 UTC
Permalink
Bonjour,

J'ai actuellement un petit soucis avec les procédures stockées.

Je travaille sur une plateforme web trustix, et je fait mes requêtes
sur une base de donnée sous Mssql2005.

Je voulais savoir si la syntaxe de mon code ci-dessus était correcte.

Mon appel dans php :

Code :

// 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);

Car j'obtiens un message d'erreur suivant :

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

Voici la procedure stockée dans MsSql server 2005 :

Code :

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
-- Create date: <21/08/2008>
-- Description: <>
-- 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

J'ai aussi effectué un test via une query qui ne pose aucun soucis :

Code :

$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;
}

Si qqn peut me dire si j'ai fait une erreur de syntaxe php.

En vous remerciant d'avance.
CrazyCat
2008-08-26 07:30:54 UTC
Permalink
Post by Narutobaka
// Initilisation des variables.
("erreur initialisation de variable") ;
J'ai un doute sur l'utilisation du @ dans le bind, mais c'est la seule
chose qui m'étonne dans ton code.

As tu une preuve que ta procédure stockée fonctionne correctement? Le
message d'erreur signale que c'est l'exécution qui n'est pas bonne (bon,
je n'y connais pas grand chose en procédures stockées).
--
Réseau IRC Francophone: http://www.zeolia.net
Aide et astuces webmasters : http://www.c-p-f.org
Communauté Francophone sur les Eggdrops: http://www.eggdrop.fr
Continuer la lecture sur narkive:
Loading...