Bonjour,

J'ai un site en PHP qui fait appel à une procédure stockée sous SQl Serveur.

Mon problème est que certaines valeurs de retour ne peuvent pas être récupérées.

La variable $message est bien récupérée mais pas $Dossier, $CA et $nature

Voici l'appel à la procédure :
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
29
30
31
32
33
34
35
36
37
38
39
40
41
// connexion dans la base de données	
		$link = mssql_connect($ip,$login,$mdp) or die('Could not connect to the server!');
 
		// Select a database:
		mssql_select_db($bdd) or die('Could not select a database.');
 
		// Création d'une nouvelle commande
		$proc = mssql_init('ZELECT_DOSSIER_INSERTION', $link);
 
		// Liaisons des valeurs ici
		mssql_bind($proc, '@@DO_Code', $magasin, SQLVARCHAR, false, false, 12);
		mssql_bind($proc, '@@Nom', $nom, SQLVARCHAR, false, false, 30);
		mssql_bind($proc, '@@Prenom', $prenom, SQLVARCHAR, false, false, 30);
		mssql_bind($proc, '@@Adresse1', $adresse1, SQLVARCHAR, false, false, 50);
		mssql_bind($proc, '@@Adresse2', $adresse2, SQLVARCHAR, false, false, 50);
		mssql_bind($proc, '@@Adresse3', $adresse3, SQLVARCHAR, false, false, 50);
		mssql_bind($proc, '@@CP', $cp, SQLVARCHAR, false, false, 15);
		mssql_bind($proc, '@@Ville', $ville, SQLVARCHAR, false, false, 30);
		mssql_bind($proc, '@@Tel', $tel, SQLVARCHAR, false, false, 20);
		mssql_bind($proc, '@@Portable', $portable, SQLVARCHAR, false, false, 30);
		mssql_bind($proc, '@@Email', $email, SQLVARCHAR, false, false, 255);
		mssql_bind($proc, '@@Ref_Achat', $ref_achat, SQLVARCHAR, false, false, 30);
		mssql_bind($proc, '@@Etage', $etage, SQLBIT, false, false, 1);
		mssql_bind($proc, '@@Nb_Etage', $nb_etage, SQLVARCHAR, false, false, 20);
		mssql_bind($proc, '@@Appareil', $appareil, SQLVARCHAR, false, false, 30);
		mssql_bind($proc, '@@Formule', $formule, SQLVARCHAR, false, false, 30);
		mssql_bind($proc, '@@Reprise', $reprise, SQLBIT, false, false, 1);
		mssql_bind($proc, '@@Livraison', $livraison, SQLVARCHAR, false, false, 10);
		mssql_bind($proc, '@@Dossier', $Dossier, SQLVARCHAR, true, false, 8);
		mssql_bind($proc, '@@CA', $CA, SQLINT4, true, false);
		mssql_bind($proc, '@@Message', $message, SQLVARCHAR, true, false, 254);
		mssql_bind($proc, '@@Nature', $nature, SQLVARCHAR, true, false, 20); 
 
 
 
		// Une fois que les valeurs sont liées, nous pouvons exécuter
		// notre commande avec mssql_execute:
		mssql_execute($proc);
 
		// Et nous pouvons tout libérer ainsi : 
		mssql_free_statement($proc);
la procédure stockée est :
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
 
CREATE PROCEDURE [dbo].[ZELECT_DOSSIER_INSERTION] (
@@DO_Code varchar(12),
@@Nom varchar(30),
@@Prenom varchar(30),
@@Adresse1 varchar(30),
@@Adresse2 varchar(30),
@@Adresse3 varchar(30),
@@CP varchar(15),
@@Ville varchar(30),
@@Tel varchar(30),
@@Portable varchar(30),
@@Email varchar(250),
@@Ref_Achat varchar(30),
@@Etage bit,
@@Nb_Etage varchar(30),
@@Appareil varchar(30),
@@Formule varchar(30),
@@Reprise bit,
@@Livraison datetime,
@@Dossier varchar(8) output,
@@CA numeric(10,2) output,
@@Message varchar(254) output,
@@Nature varchar(20) output
)
 
as 
begin
 
 
 
 
set @@Message = ''
set @@Dossier = ''
set @@CA = 0
set @@Nature = 'D-ROUTE'
 
....
 
		EXEC ZDIV_Param_GetNumero 'DR',  'TG0', @@Dossier OUTPUT
 
		....
 
		select @@CA = CA
		from Dossiers
		where Dossier = @@Dossier and
		Dossier_Nature = 'D-ROUTE' and
		Dossier_Agence =  'TG0'
 
		set @@Message = ''
 
		print @@CA
		print @@Dossier
 
		set @@Nature = 'D-ROUTE'
 
 
 
	.....
 
 
end
le print @@CA et @@Dossier affiche bien les bonne valeur si la procédure stockée est lancée directement depuis SQL Serveur.

Est ce que vous pouvez m'aider car c'est surement tout bête mais je n'arrive pas à trouver ?

Merci d'avance.