Utiliser des parametres dans une UDTF sql

RPG (3 et 4, free), CL, SQL, etc...
Répondre
Alain Guillaume
Messages : 3
Enregistré le : lun. 08 oct. 2007, 08:02:52

Utiliser des parametres dans une UDTF sql

Message par Alain Guillaume »

Cette fonction recoit en parametre un code article et doit renvoyer le code article et la designation.

CREATE FUNCTION GRPCOMFIC.TEST (REF CHAR(12) )

RETURNS TABLE (

AGCART CHAR(12) ,

AGLIAR CHAR(30) )

LANGUAGE SQL

SPECIFIC GRPCOMFIC.TEST

NOT DETERMINISTIC

READS SQL DATA

CALLED ON NULL INPUT

DISALLOW PARALLEL

RETURN SELECT AGCART , AGLIAR FROM GRPCOMFIC . ARGENPF where agcste = 'POU' and agcart = REF;

L'execution de la fonction

select * from table(grpcomfic.test('reference')) as X

renvoi l'erreur seuivante

Etat SQL : 42704
Code fournisseur : -204
Message : [SQL0204] TEST de type *N dans GRPCOMFIC non trouvé. Cause . . . . . : TEST de type *N dans GRPCOMFIC n'a pas été trouvé. 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, aucune fonction, procédure ou aucun déclencheur n'a été trouvé. Si aucune fonction n'a été trouvée, TEST 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 pas 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.


Sans paramètre d'entré la requête fonctionne.

cmasse
Site Admin
Messages : 813
Enregistré le : mer. 14 févr. 2007, 18:00:03
Localisation : Nantes
Contact :

Signatures des fonctions

Message par cmasse »

Une fonction sql (UDF ou UDTF) est reconnue sur

1/ son nom
2/ sa bibliothèque
3/ sa signature qui est composée du nombre de paramètres et du type de chacun d'entre eux

Par exemple si vous définissez une fonction TOTO attendant 2 paramètres, l'utilisation de TOTO avec un seul paramètre provoquera le même message d'erreur.


Dans votre cas, la fonction attend du CHAR(12) et vous envoyez une constante qui est toujours assimilée à du VARCHAR(). essayez:

select * from table(grpcomfic.test(CAST('reference' as CHAR(12)))) as X

et racontez nous, svp....
Christian Massé (Volubis.fr)

Alain Guillaume
Messages : 3
Enregistré le : lun. 08 oct. 2007, 08:02:52

Utiliser des parametres dans une UDTF sql

Message par Alain Guillaume »

Ca marche.
Merci beaucoup.

Répondre