Store procédure

Par Ani, il y a 8 ans


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.

5 réponses

antho07, il y a 8 ans

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 ?

Ani, il y a 8 ans

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);
antho07, il y a 8 ans

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

Pierrot01, il y a 8 ans

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

Ani, il y a 8 ans

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 />"; }