Bonsoir,
je rencontre un probleme avec une procedure stored dans sql server et quand je veut l'excuter sa reourne rien un peut d'aide svp je bloque depuis quelques jours la dessus
je vous montre un petit example de ce que je fais ,
voici la procedure sur sql server:
USE [prese]
GO
/****** Object: StoredProcedure [dbo].[SonNum] Script Date: 11/23/2017 12:41:50 PM ******/
SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER OFF
GO
ALTER PROCEDURE [dbo].[SonNum] ( @FiNo bigint,
@TeNo bigint,
@Dok int)
AS
BEGIN
declare @DokNum bigint
set @DokNum=(select DokNo from CH_SonDokNum where FiNo=@FiNo and TeNo=@TeNo and Dok=@Dok)
if @DokNum = 0 or @DokNum is null
begin
set @DokNum=1
INSERT CH_SonDokNum (FiNo,TesNo,Dok,kNo) values(@FiNo,@TeNo,@Dok,2)
end
else
begin
update CH_SonNum set Dok=Dok+1 where FiNo=@FiNo and TeNo=@TeNo and Dok=@Dok
end
select @DokNum as Dok
end
et voici mon code php :
<?php
$FiNo= 1;
$TeNo=10;
$Dok=204;
$sql = "EXEC [dbo].[SonNum] '$FiNo','TeNo','$Dok';
$stmt = sqlsrv_query( $conn,$sql);
if( $stmt === false ) {
if( ($errors = sqlsrv_errors() ) != null) {
foreach( $errors as $error ) {
echo "SQLSTATE: ".$error[ 'SQLSTATE']."<br />";
echo "code: ".$error[ 'code']."<br />";
echo "message: ".$error[ 'message']."<br />";
}
}
}
?>
merci a vous.
Salut,
fallait que j'ajoute aussi sa:
if( $stmt ) {
sqlsrv_commit( $conn );
echo "Transaction committed.<br />";
} else {
sqlsrv_rollback( $conn );
echo "Transaction rolled back.<br />";
}
Bonjour ,
je ne connais pas les procédures MySqlServer et je vais surêment dire une connerie mais il n'y a pas de notion de paramètres IN et OUT ?
Bonjours,
j'ai tester aussi mais sa marhce pas non plus .
$procedure_params = array(
array($FiNo, SQLSRV_PARAM_IN),
array($TeNo, SQLSRV_PARAM_IN),
array($Dok, SQLSRV_PARAM_IN));
$stmt = sqlsrv_query( $conn,$sql,$procedure_params);
Je parlais de précision sur le paramètre dans la procédure.
par exemple
CREATE PROCEDURE GetImmediateManager
@employeeID INT,
@managerID INT OUTPUT
AS
BEGIN
SELECT @managerID = ManagerID
FROM HumanResources.Employee
WHERE EmployeeID = @employeeID
END
Salut,
remplace ça :
$sql = "EXEC [dbo].[SonNum] '$FiNo','TeNo','$Dok';
par ça :
$sql = "EXEC [dbo].[SonNum]($FiNo,$TeNo,$Dok);
les variables sont numérique, donc, pas entre côte ;)
de plus, il faut mettre des parentheses pour les parametres,
@plus.
Pierre