IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Récupération retour d'une procédure stockée SQL Server


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Femme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2012
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2012
    Messages : 49
    Points : 42
    Points
    42
    Par défaut Récupération retour d'une procédure stockée SQL Server
    Bonjour,
    Depuis plusieurs jours je suis bloquée .

    Voici mon php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    // Connexion à la base de données
    $DB = new DB;
    $req = "ut_DocSupprim $iIdDoc"; // Procédure stockée avec passage d'une variable
    $DB->query($req); // Execution procédure
    L'execution se passe bien, je rentre bien dans la procédure, la variable est bien récupérer.
    Cependant je voudrait récupérer le retour que me renvois cette procédure stockée via php pour pouvoir l'afficher.
    Comment faire ? Existe t-il une fonction spécifique ?
    Help me

    Je précise que ce n'est pas moi qui ai écrit le code ^^

    EDIT: ma procédure SQL

    Code sql : 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
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    USE [maBASE]
    GO
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
     
    ALTER Procedure [dbo].[ut_DocSupprim]
    	(
    	@IdDoc int = null
    	)
    As
    	/* set nocount on */
    	declare @nb int,
    			@IdVer int,
    			@Titre varchar(100),
    			@Rev smallint,
    			@Sql varchar (255)
     
    	SELECT     @nb= count(*)
    	FROM       Documents
    	WHERE     (IdDoc = @IdDoc)	
    	if @nb=0
    		begin
    		return 'Document inexistant'
    		end
     
    	SELECT     @Titre=DocTitre
    	FROM       Documents
    	WHERE     (IdDoc = @IdDoc)	
     
    	SELECT     @nb= count(*)
    	FROM       Menu
    	WHERE     (IdDoc = @IdDoc)	
    	if @nb>0
    		begin
    		return 'Suppression impossible, le document '''+@Titre+''' est lié à un menu'
    		end
     
    	--suppression de la dernière version du document
    	SELECT   top 1   @IdVer=IdVer
    	FROM       DocVersions
    	WHERE     (IdDoc = @IdDoc)
    	ORDER BY DocRev DESC
     
    	set @Sql = 'DELETE FROM Form_Cases WHERE IdVer = ' + convert(varchar(10),@Idver)
    	--execute (@Sql)
    	set @Sql = 'DELETE FROM DocVersions WHERE IdVer = ' + convert(varchar(10),@Idver)
    	--execute (@Sql)			
     
     
    	SELECT   @nb= count(*)
    	FROM     DocVersions
    	WHERE    (IdDoc = @IdDoc)
    	if @nb=0
    	-- suppression du document s'il ne reste plus aucune version
    		begin
    		--si le doc est réservé à des groupes, il faut supprimer les réservations
    		SELECT   @nb= count(*)
    		FROM     BS_GROUPE_DOCUMENT
    		WHERE    (IdDoc = @IdDoc)
    		if @nb>0
    			begin
    			set @Sql = 'DELETE FROM BS_GROUPE_DOCUMENT WHERE IdDoc = ' + convert(varchar(10),@IdDoc)
    			--execute (@Sql)			
    			end
    		--suppression du document
    		set @Sql = 'DELETE FROM Documents WHERE IdDoc = ' + convert(varchar(10),@IdDoc)
    		--execute (@Sql)
    		return  'Document '''+@Titre+''' supprimé.'			
    		end
     
    	else
    	-- s'il reste encore une version, mise à jour de la table document 
    		begin
    		SELECT top 1 @Rev=DocRev
    		FROM       DocVersions
    		WHERE     (IdDoc = @IdDoc)
    		ORDER BY DocRev DESC
     
    		UPDATE Documents set DocRev=@Rev, Valid_Date=NULL, Valid_Id=NULL 
    		FROM Documents
    		WHERE(IdDoc = @IdDoc) 			
    		end
     
    	return 'Dernière version du document '''+@Titre+''' supprimée.'

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Points : 1 220
    Points
    1 220
    Par défaut
    bonjour,
    avec mysql par exemple, on appelle une procédure avec le mot clé call
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    // Connexion à la base de données
    $DB = new DB;
    $req = "call ut_DocSupprim($iIdDoc)"; // Procédure stockée avec passage d'une variable
    $resultat=$DB->query($req); // Execution procédure
    var_dump($resultat);

    Essaie de reproduire ,dans l'appel php, la syntaxe de l'exécution d'une procédure dans un interpréteur sql server.Et il me semble qu'une procédure en Sql server est exécutée avec le mot clé EXEC
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    // Connexion à la base de données
    $DB = new DB;
    $req = "EXEC ut_DocSupprim $iIdDoc"; // Procédure stockée avec passage d'une variable
    $resultat=$DB->query($req); // Execution procédure
    var_dump($resultat);

  3. #3
    Membre du Club
    Femme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2012
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2012
    Messages : 49
    Points : 42
    Points
    42
    Par défaut
    Le var_dump fait tout planter, je crois que je travaille sur une version php tellement ancienne que je ne peut pas l'utiliser.
    Je fait ça pour le boulot je précise, et je ne peut pas mettre à jour php.
    Mon problème n'est pas l'exécution de la procédure mais la récupération du return de la procédure.
    L'exécution se déroule parfaitement.

  4. #4
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Points : 1 220
    Points
    1 220
    Par défaut
    var_dump est une fonction native de php et elle est supportée depuis php4.Je ne vois donc pas de raison qui l'empêche de fonctionner surtout dans un environnement de développement où le débogage est récurrent.

    Mon problème n'est pas l'exécution de la procédure mais la récupération du return de la procédure.
    L'exécution se déroule parfaitement.
    Le but de l''exécution de la procédure(ou de la requête) dans php c'est de pouvoir récupérer le résultat retournée par cette dernière.Pour pouvoir exploiter ce résultat, un débogage, avec var_dump, est toujours utile.Il se peut que ton problème vient de la connexion avec sql server?rien dans ton message laisse penser qu'une connexion avec sql server a bien été initialisée.

    il faut aussi effectuer certains contrôles sur le résultat retourné par quey(vérifier si query renvoie false)

  5. #5
    Membre du Club
    Femme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2012
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2012
    Messages : 49
    Points : 42
    Points
    42
    Par défaut
    Ce que je n'ai pas expliquer, c'est que je travaille sur un appli qui est coder si je puis dire avec les pieds.
    C'est une application conçus avec ExtJS. Et je ne peut pas simplement afficher vu comment cette appli a été pondue.
    Je ne comprend pas pourquoi var_dump fait tout planter...

    EDIT:

    $DB->query($req) me renvois : Resource id #39
    Je ne vois pas du tout à quoi cela correspond

Discussions similaires

  1. [XL-2013] Retour d'une procédure stockée sur sql server - Multi Select
    Par i0raek dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 28/10/2013, 12h29
  2. Réponses: 0
    Dernier message: 27/04/2009, 16h13
  3. Procédures stockées SQL Server, récupération sous Delphi
    Par rophi dans le forum Bases de données
    Réponses: 10
    Dernier message: 03/12/2007, 14h48
  4. Procédures stockées SQL Server compatibles avec MySQL ?
    Par Nen'S dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 24/01/2006, 19h18
  5. Valeur de retour d'une procédure stockée
    Par Rudyweb dans le forum MFC
    Réponses: 4
    Dernier message: 25/02/2005, 17h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo