Utiliser des parametres dans une UDTF sql
Posté : mar. 07 oct. 2008, 20:38:17
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.
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.