[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 |