Erreur avec une procedure

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Erreur avec une procedure

Re: Erreur avec une procedure

par Nours312 » 29 juil. 2010, 00:26

parce que (de ce qu'il me semble) une procédure n'est pas faite pour retourner quelque chose !... elle peux retourner des éléments, mais ce n'est pas sa fonction primaire ! tu devrais p-e utiliser une FUNCTIONpour ce faire ;)

sinon, pour retourner un élément avec une procédure tu peux faire comme ceci :
DELIMITER // 

CREATE PROCEDURE myProc (IN id INT, OUT result TINYTEXT)
BEGIN

SELECT content INTO result FROM MaTable WHERE id = id ;

END //
et l'employer ainsi ::

CALL myProc (3, @m) ;

SELECT @m ;

(ou dans le genre, j'ai plus les idées claire ^^ ) @+

Erreur avec une procedure

par damaskinos » 28 juil. 2010, 18:33

Je ne sais pas si je peux poster ça ici mais je me lance. J'ai une erreur quand j’appelle une procédure.
L’erreur :
#1312 - PROCEDURE can't return a result set in the given context
la procedure
DROP PROCEDURE `BACKOFFICE_SUBMIT_PACKAGE`//
CREATE DEFINER=`root`@`localhost` PROCEDURE `BACKOFFICE_SUBMIT_PACKAGE`(
    IN iLogin VARCHAR(255),
    IN iIdParentApplication INT(10),
    
    IN iAppName VARCHAR(255),
	IN iAppType TINYINT,
    IN iAppVersion INT(11),
    IN iMetadata TEXT,
    IN iSettings TEXT,
	IN iFields TEXT,
	IN iCreationDate INT(10)
)
BEGIN
    DECLARE tidustemp  INT(10) DEFAULT 0;
    DECLARE tresult TEXT DEFAULT '<response __action="BACKOFFICE_SUBMIT_PACKAGE">';
    SELECT idUser INTO tidustemp FROM `tsf-users` WHERE login=iLogin LIMIT 1;

    INSERT INTO `tsf-applications`
    SET     idDeveloper=tidustemp,
            idParentApplication=iIdParentApplication,
            appName=iAppName,
            appType=iAppType,
            appVersion=iAppVersion,
            metadata=iMetadata,
            settings=iSettings,
            fields=iFields,
            creationDate = iCreationDate;
        
    SET tresult = CONCAT(tresult,'<application __idi="',TRUNCATE(RAND()*1000000000,9),'" __id="',LAST_INSERT_ID(),'" __iddev="',tidustemp,'" __name="',iAppName,'" __type="',iAppType,'" __metadata="',iMetadata,'" __settings="',iSettings,'" __fields="',iFields,'" __creationDate="',iCreationDate,'" />');
	
	SET tresult = CONCAT(tresult,'</response>');
	
    SELECT tresult;
END

J’ai beau chercher je trouve pas pourquoi. Merci d’avance pour vos suggestions