8798 sujets

Développement web côté serveur, CMS

Bonjour,
J'ai une procédure SQL Server :
USE [maBase]
GO
 
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
 
 
ALTER Procedure [dbo].[ut_DocSupprim]
    (
    @IdDoc int = null -- variable passer en paramettre
    )
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
        select 'Document inexistant'
        return
        end
 
    SELECT     @Titre=DocTitre
    FROM       Documents
    WHERE     (IdDoc = @IdDoc) 
 
    SELECT     @nb= count(*)
    FROM       Menu
    WHERE     (IdDoc = @IdDoc) 
    if @nb>0
        begin
                -- je voudrai recupérer ça
        select 'Suppression impossible, le document '''+@Titre+''' est lié à un menu'
        return
        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


Ainsi qu'un script PHP pour l'exécuter :
// Connexion à la base de données
$DB = new DB;
$req = "ut_DocSupprim $iIdDoc"; // procédure avec passage de variable
// query est une fonction qui lance l'execution de la procédure
$DB->query($req);


Serais t-il possible en PHP de récuperer les message où j'ai mis en commentaire "-- je voudrai recupérer ça" ?
Je précise que se n'est pas moi qui ai écris le code Smiley langue .
Quelqu'un aurais une solution ?
Merci Smiley smile
Salut,

Récuperer de la procédure stockée sql server depuis le php

avec utilisation d'une couche d'abstraction pear DB en plus?

c'est ça qui se cache derriere le new DB;
ou c'est une classe faite maison ?

J'ai du faire ça avec oracle et zend_db,
mais je ne connais pas les détails avec tes technologies.

en cherchant 5 minutes j'ai trouvé ce topic.

Mais là le gars utilise directement les drivers pour sql server sans passer par une couche d'abstraction.

tu pourrais faire comme lui.

Sinon elle retourne quoi ta fonction query() ?

la doc pear indique:
"
Return value

mixed - a new DB_result object for queries that return results (such as SELECT queries), DB_OK for queries that manipulate data (such as INSERT queries) or a DB_Error object on failure
"

il contient quoi le mixed si tu fais

$result = $DB->query($req);
echo var_dump($result);

?