Page 1 sur 1

Requetage Procédure stocké sur MS SQL

Posté : 15 juil. 2014, 16:02
par vinceee
Salut !

Alors tout d'abord je me sert de php sur une BDD MS SQL . je peux donc accédé a tout les fonctions sqlsrv_* .

J'arrive a faire des requétes simple . Mais quand j'essaie de faire un CALL sur une procédure stockée je n'y arrive pas .

Voila le code :
    $sql = "CALL CheckUserAccount(?,?);";   //l’erreur se situe apriori ici . je donne plus bas la procédure stocké.
            $params=array($identifiant,$motdepasse);   // 2 Strings en paramètre 
            $stmt = sqlsrv_query($conn, $sql, $params); 
Il n'y a pas l'air d'avoir de problème ni avec le mot de passe ni avec l'identifiant car je l'ai déjà utilisé pour faire d'autres requêtes.
USE [MACHX]
GO
/****** Object:  StoredProcedure [dbo].[sp_CheckUserAccount]    Script Date: 15/07/2014 15:10:05 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*-----------------------------------------------------------------------------
Check if user exist in the database
-----------------------------------------------------------------------------*/
ALTER Procedure [dbo].[sp_CheckUserAccount](@UserLogon varchar(50), @UserPwd varchar(50))
As
	set nocount on
	set quoted_identifier on
	
	declare @LogonId int
	select @LogonId = XCMT_U_NUM
		from XCMT_USERS
		where XCMT_U_LOGON = @UserLogon
		and	XCMT_U_PASSWORD = @UserPwd
		
	if @LogonId is not null
	begin
		select 
				'UID'				= XCMT_U_UID,							--UID
				'UserId'			= XCMT_U_NUM,							--operator id
				'UserName'			= XCMT_U_NAME,					--user name
				'UserCompanyID'		= XCMT_U_COMPANY,
				'UserCompany'		= XCMT_C_LABEL,
				'UserLastName'		= XCMT_U_LAST_NAME,							--Last Name
				'UserFirstName'		= XCMT_U_FIRST_NAME,							--Fisrt name
				'LastAccess'		= convert(varchar(10), XCMT_U_LAST_ACCESS, 101)+' '+ convert(varchar(8), XCMT_U_LAST_ACCESS, 108),
				'EntityId'			= XCMT_U_ENTITY,								--entity id
				'EntityName'		= XCMT_ENT_LABEL,							--entity name
				'Email'				= XCMT_U_EMAIL,
				'Quizz'				= XCMT_U_QUIZZ,
				'Rights'			= XCMT_U_AUTORISATION_LEVEL,
				'Activation'		= XCMT_U_ACTIVATION,
				'EntityActivation'	= XCMT_ENT_ACTIVATION,
				'DefaultPage'		= XCMT_U_DEFAULT_PAGE,
				'OutOfOffice'		= XCMT_U_OUTOFFICE_STATUS,
				'Country'			= XCMT_U_COUNTRY,
				'Validation'		= XCMT_U_VALIDATION,
				'Language'			= XCMT_U_LANGUAGE,
				'FTID'				= XCMT_U_FTID,
				'GUARDIAN'			= XCMT_U_GUARDIAN,
				'Phone'				= XCMT_U_PHONE,
				'Theme'				= XCMT_U_THEME,
				'UseXbook'			= XCMT_U_USE_XBOOK_STATUS
			from XCMT_USERS, XCMT_ENTITY, XCMT_COMPANY
			where XCMT_U_NUM	= @LogonId
			and	XCMT_U_ENTITY = XCMT_ENT_NUM
			and 	XCMT_U_COMPANY = XCMT_C_NUM
		
	end
	else
	begin
		--> if the user does not exists
		return 1
	end
return 0
L'erreur que je reçoit " erreur de syntaxe près @P1"( premier "?" la ligne ou il y a l'erreur .)

Je vous remercie par avance de votre aide :)

Re: Requetage Procédure stocké sur MS SQL

Posté : 16 juil. 2014, 15:55
par moogli
salut,

as tu essayé avec sqlsrv_prepare et sqlsrv_execute ? ou tout simplement sqlsrv_query ?

sinon il ne manquerais pas un "sp_" devant le nom de la procédure ?


@+