Narutobaka
2008-08-25 14:17:26 UTC
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.
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.