begin process at 2012 05 29 01:39:04
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Base de données

 > 

Autre

 > 

execution procedure stockée prepareSP SQL Server


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

execution procedure stockée prepareSP SQL Server

lundi 30 juillet 2007 à 14:30:09 | execution procedure stockée prepareSP SQL Server

ZePhenix

Bonjour,

Je souhaite faire une classe de connection ayant un fonction permettant d'executer une procedure stockée SQL Server ayant un parametre d'entree et un parametre de sortie à partir d'une page PHP.
j'utilise donc la fonction prepareSP().

la connection se fait dans une classe de connection avec les parametres suivants:
define('DB_DRIVER','odbc_mssql');
define('DB_DSN','Driver={SQL Server};Server=XXXX;Database=XXXX;');

ma fonction d'execution de procedure stockée:
public function execQuery($Query,$param1)
    {
        $stmt=$this->conn->PrepareSP($Query);
        $this->conn->InParameter($stmt,$param1,'entree');
        $this->conn->OutParameter($stmt,$ret,'sortie');
        $this->conn->Execute($stmt);
    }

ma procedure stockée:
CREATE  procedure sp_suppr_sta_groupe (@entree varchar(6), @sortie int output)
as
begin
    BEGIN TRANSACTION
    delete from sta_groupe where id=@entree;
    if (@@error=0)
        begin
            set @sortie= @@rowcount
            COMMIT
        end
    else
        begin
            ROLLBACK
            set @sortie= 0
        end
end
GO

l'execution de ma fonction génère l'erreur suivante:
Error :
Date :2007-07-30 14:28:08 (CEST)
Errornum :2
Errortype :Alerte
Errormsg :odbc_execute() [function.odbc-execute]: SQL error: [Microsoft][ODBC SQL Server Driver][SQL Server]Procedure 'sp_suppr_sta_groupe' expects parameter '@entree', which was not supplied., SQL state 37000 in SQLExecute
Scriptname :C:\Applics\PHP\include\adodb480\adodb\drivers\adodb-odbc.inc.php
Scriptlinenum :510

Je n'arrive pas du tout à trouver la solution, quelq'un aurait-il une idée?

Merci
mardi 31 juillet 2007 à 18:47:52 | Re : execution procedure stockée prepareSP SQL Server

malalam

Administrateur CodeS-SourceS
Hello,

opn ne sait pas ce qu'il y a dans ta méthode PrepareSP(), et surtout dans InParameter() alors difficile de t'aider.
En tous cas, le message est clair : ta variable @entree n'est pas renseignée par ton la "prépération" de ta requête.
Donne le nom du package que tu utilises pour gérer ta connexion et tes requêtes, puisque je pense que cx'est un package trouvé sur le net ? Ou provenant d'un framework PHP ?

mercredi 1 août 2007 à 09:56:00 | Re : execution procedure stockée prepareSP SQL Server

ZePhenix

Réponse acceptée !
Merci pour ta réponse.
Les méthodes PrepareSP() et InParameter sont fournies dans les classes adodb des packages php.
finalement, je suis passé par un objet COM pour créer ma fonction, et ça tourne niquel. En fait, c'etait ma connexion qui n'acceptait pas ces commandes...
Voilà ce que ça donne maintenant:

public function execQueryCom($Query,$Param)
    {
       //initialisation de la connection adodb
        $conn = new COM("ADODB.Connection");
        $conn->CommandTimeout=0;
        $conn->ConnectionTimeout=0;   
        $conn->Open(DB_DSN." UID=".DB_USER.";PWD=".DB_PASSWORD.";");
        //initialisation de la commande adodb
        $oCmd = new COM("ADODB.Command");
        $oCmd->ActiveConnection = $conn ;
        $oCmd->CommandText = $Query;
       //le type 4 correspond a l'execution de proc stock
        $oCmd->CommandType = 4;
        $oCmd->CommandTimeout = 0;
        $oCmd->Prepared = true;       

        $var = trim($Param);
        //je test le type du parametre fourni et je le traite différement suivant son type ->affectation parametre d'netree
        if (is_string($Param))
        {
            $oCmd->Parameters->Append( $oCmd->CreateParameter("@entree", 200, 1 , 255, $var));
        }
        else
        {
            if (is_int($Param))
            {
                $oCmd->Parameters->Append( $oCmd->CreateParameter("@entree", 3, 1 , 10, $param));
            }
            else
            {
                if (is_float($Param))
                {
                    $oCmd->Parameters->Append( $oCmd->CreateParameter("@entree", 14, 1 , 20, $param));
                }
                else
                {
                    if (is_bool($Param))
                    {
                        $oCmd->Parameters->Append( $oCmd->CreateParameter("@entree", 11, 1 , 6, $param));
                    }
                }
            }
        }
    //je recupere ma cvariable de sortie
        $oCmd->Parameters->Append( $oCmd->CreateParameter("@sortie", 3, 2 ,5 , 0) );
        $oCmd->Execute();
        return $oCmd->Parameters['@sortie']->Value;
    }

J'ai donc pu résoudre mon problème, je peux facilement executer mes procedures stockées!


Cette discussion est classée dans : sql, server, stockée, procedure, entree


Répondre à ce message

Sujets en rapport avec ce message

SQL SERVER [ par ceeno ] Bonjour , j'ai un probleme avec SQL SERVER , je souhaiterais l'installer squr un autre disque que le c:\ seulement je n'y arrive pas...Quelqu'un poura migration sql server mysql si ? deja posée dslée.... [ par charis ] charisben voila, tout est dans le titre!! je suis toujours tres grande debutante, et je viens d'apprendre que l'entreprise pour laquelle je fais mon s SQL server & encodage caractères [ par ljanvier ] Bonjour, J'utilise PHP+apache+MS SQL server. Avec ce trio, quand je fais des requêtes sur ma base de donnée, j'obtiens des erreurs d'encodage des cara PROBLEME AVEC SQL SERVER 2000 ET AVEC LES IMAGE [ par kenza_sana ] Bonjour je vous demande de m'aider car ma base de donnees contient des images et j'utilise SQL SERVER 2000 ...Le rpobleme c'est que quand j'ai mis dan Liaison php-mssql [ par fafa00 ] Bonjour,Je voudrais connecter une base sql (j'utilise sql server 2000 et iis) sur une page phpVoici mon code : $server="localhost";$username="root";$p SQL server et sauvegarde [ par paloxicide ] J'ai une base de donées sous sql server express 2005 et j'aimerais savoir s'il etait possible de sauvegarder ma base au format *.sql ou *.txt (comme c SQLServer & PHP [ par _benjy ] Salut les php'istesVoilà j'ai un p'tit souci et p'etre que l'un d'entre vous a la solution ...Voilà ma config :  un IIS + PHP 5 + MySQL 5 + SQL SERVER php&sql server [ par nakaoutar ] salut tous le monde j'aimerai avoir un site dans lequel je pourrai trouver du code source du php et sql server merci Accès donnée sur SQL server [ par thekingsky38 ] Bonjour à tous Voilà près de 6heures que je chercher déséspérément à acceder à mes données sur un serveur SQL server. J'ai un serveur web IIS4, qui pr Connexion SQL Server via Pocket pc [ par joecoolups ] Bonjour a tous.Je suis a  la recherche d'un objet SQLClient qui me permettrait une connexion directe a SQL Server via Pocket PC.Une connexion autre qu


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,374 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales