Creation d'une fonction

RPG (3 et 4, free), CL, SQL, etc...
Répondre
lohezic
Messages : 8
Enregistré le : lun. 07 déc. 2009, 16:55:10

Creation d'une fonction

Message par lohezic »

Bonjour ,

J'ai crée une fonction via opération navigator,

CREATE FUNCTION MICU.FCT_TST (
IDACCES DECIMAL(10, 0) ,
MOTDEPASSE CHAR(10) )
RETURNS CHAR(20)
LANGUAGE SQL
SPECIFIC MICU.FCT_TST
NOT DETERMINISTIC
READS SQL DATA
CALLED ON NULL INPUT
SET OPTION ALWBLK = *ALLREAD ,
ALWCPYDTA = *OPTIMIZE ,
COMMIT = *NONE ,
CLOSQLCSR = *ENDMOD ,
DECRESULT = (31, 31, 00) ,
DFTRDBCOL = *NONE ,
DYNDFTCOL = *NO ,
DYNUSRPRF = *USER ,
SRTSEQ = *HEX
BEGIN
DECLARE CRYPTAGE CHAR ( 20 ) ;
SET CRYPTAGE = 'E_' || CHAR ( IDACCES ) ;
RETURN CRYPTAGE ;
END ;

J'ai le message d'erreur ci dessous lorsque je l'utilise dans un Insert :
Insert into tab1 values( 1, FCT_TST( 10, 'Toto') ) . Lorsque je mets qu'une seule entrée en decimal cela fonctionne , une seule entrée en charactère même d'erreur .


Merci de votre aide

Le message d'erreur:
Etat SQL : 42704
Code fournisseur : -204
Message : [SQL0204] FCT_TST de type *N dans MICU non trouvé. Cause . . . . . : FCT_TST de type *N dans MICU n'a pas été trouvé. Si *ALL est le nom du membre, la table n'est pas partitionnée. S'il s'agit d'une instruction ALTER TABLE et que le type est *N, aucune contrainte ou aucune partition n'a été trouvée. S'il ne s'agit pas d'une instruction ALTER TABLE et que le type est *N, une fonction, une procédure, un déclencheur ou un objet séquence est introuvable. Si aucune fonction n'a été trouvée, FCT_TST est le programme de service contenant la fonction. La fonction ne sera pas trouvée, à moins que le nom externe et le nom d'usage ne correspondent exactement. Recherchez dans l'historique du travail un message donnant plus de détails sur la fonction recherchée et le nom qui ne correspondait pas. Que faire . . . : Modifiez le nom, puis renouvelez votre demande. Si l'objet est un groupe de noeuds, vérifiez que le produit DB2 Multisystem est installé sur votre système et créez un groupe de noeuds à l'aide de la commande CL CRTNODGRP. Si aucune fonction externe n'a été trouvée, assurez-vous que la casse de EXTERNAL NAME dans l'instruction CREATE FUNCTION correspond exactement à la casse du nom exporté par le programme de service.


Cordialement Mme Lohezic

pmaugin
Site Admin
Messages : 30
Enregistré le : mer. 14 févr. 2007, 18:28:48

(sans texte)

Message par pmaugin »

il faut mieux utiliser FCT_TST(10, char('toto')).
Philippe MAUGIN, (RAUTUREAU APPLE SHOES)
V7R2.

Répondre