Bonjour,
Existe t-il une fonction spécifique en php PDO pour récupérer la valeur retourner par "return" d'une procédure stockée exécuter?
Cela fait plusieurs jour et je suis vraiment bloquée :(

Mon code PHP
[code]
// Connexion à la base de données
$DB = new DB;
// Chaine procédure SQL avec passage de variable
$req = "ut_DocSupprim $iIdDoc";
// Exécution procédure, la procédure s'exécute bien
$exec = $DB->query($req);
[/code]

Ma procédure SQL de 3km de long :p :
[code]
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),
@chaineFin varchar(200)

set @chaineFin = 'test'

SELECT     @nb= count(*)
FROM       Documents
WHERE     (IdDoc = @IdDoc)  
if @nb=0
    begin
    select 'Document inexistant'
    return @chaineFin
    end

SELECT     @Titre=DocTitre
FROM       Documents
WHERE     (IdDoc = @IdDoc)  

SELECT     @nb= count(*)
FROM       Menu
WHERE     (IdDoc = @IdDoc)  
if @nb>0
    begin
    select 'Suppression impossible, le document '''+@Titre+''' est lié à un menu'
    return @chaineFin
    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)
    select '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)   
    select 'Dernière version du document '''+@Titre+''' supprimée.'         
    end

return @chaineFin

[/code]

Je précise avant de me faire huer que se n'est pas moi qui ai écrit ce code :).
Merci

Aucune réponse