[Firebird-fr-support] =?iso-8859-1?q?Comment_r=E9cup=E9rer_le_r?= =?iso-8859-1?q?=E9sultat_d=27un_S
Brought to you by:
makowski
|
From: Florian C. <ch...@bf...> - 2007-11-01 12:53:51
|
Bonjour,
J'ai un problème avec une procédure stockée. J'aimerais tout simplement
afficher le résultat d'un select. Voici le code:
SET TERM ^ ;
ALTER PROCEDURE CHECK_FUNCTION (
HASH Varchar(40),
FUNCTION_NAME Varchar(30) )
AS
BEGIN BEGIN
/* Check if the function is already in the DB for this program... */
IF (NOT EXISTS(SELECT F.FUNCTION_NAME FROM FUNCTIONS F
JOIN FUNC_TO_PROG FTP ON FTP.FUNCTION_NAME =
F.FUNCTION_NAME
WHERE F.FUNCTION_NAME = :FUNCTION_NAME
AND FTP.HASH = :HASH))
/* ...if not, then alert the user. */
THEN
BEGIN
SELECT MESSAGE_TEXT FROM MESSAGES_FOR_HARMFUL_FUNCTIONS
WHERE FUNCTION_NAME =
:FUNCTION_NAME; END
END
END^
SET TERM ; ^
Et j'obtiens le message d'erreur suivant:
Message: isc_dsql_prepare failed
SQL Message : -104
Invalid token
Engine Code : 335544569
Engine Message :
Dynamic SQL Error
SQL error code = -104
Token unknown - line 17, column 57
;
Ce que j'aimerais faire c'est de récupérer le résultat du select lorsque
la condition du IF loop est satisfaite. C'est à dire lorsque la DB ne
contient pas encore de fonction pour le programme que j'évalue.
Comme ce procédé ne fonctionne pas, alors j'ai essayé de mettre le
résultat dans une variable enfaisant une autre procédure comme suit:
SET TERM ^ ;
ALTER PROCEDURE MESSAGE_BAD_FUNCTION_ALERT (
FUNCTION_NAME Varchar(30) )
RETURNS (
MESSAGE_TEXT Varchar(100) )
AS
BEGIN
SELECT MESSAGE_TEXT FROM MESSAGES_FOR_HARMFUL_FUNCTIONS
WHERE FUNCTION_NAME = :FUNCTION_NAME INTO MESSAGE_TEXT;
END^
SET TERM ; ^
Là encore, le résultat du SELECT n'est pas contenu dans MESSAGE_TEXT.
Pourtant ce SELECT me retourne bien ce que je cherche, mais il ne met
pas son résultat dans la variable.
Comment faire?
Je vous serais très reconnaissant de m'indiquer vos remarques et idées
concernant ce problème.
Bien à vous,
Florian Champion
|