Fonction pour compter argmuments
Bonjour,
Je cherche une fonction (ou en bâtir une) qui me permettrait de savoir si j'ai plus d'un argument dans une liste.
Cette fonction prendrait une liste de n paramètres un peu comme greatest.
Pour info c'est parce que j'ai un @Prompt de BO qui m'envoie cette chaîne sous Oracle ('ACP' , '118', 'ZA' .... variable) ... il me faut quelque chose pour modifier cette chaîne afin de savoir si j'ai un ou plusieurs arguments.
Je ne peux pas convertir en chaîne ('ACP', '118', 'ZA') et mesurer la longueur ou faire un INSTR sur la virgule car j'ai une erreur sur la parenthèse :
Code:
1 2
| select instr( to_char('819' , '901') , ',') from dual
--======> erreur |
concat fonctionne presque mais c'est deux arguments seulement !!!
Merci.
Pbm Fonction pour compter argmuments
Bonjour,
Business Object passe à ma base oracle ce genre de chaîne ('ACP', '118', 'ACT' ... ). J'ai besoin de détecter sous oracle si j'ai plus d'un argument là dedans.
j'ai 3 pistes,
1/ la 1ère avec to_char, si j'arrive a convertir en chaîne ensuite je fais un INSTR et si je trouve une virgule c'est bon, j'ai plusieurs arguments. problème,
Code:
1 2
| SELECT instr( to_char(' ('ACP', '118', 'ACT') ') , ',') FROM dual
======> erreur |
comment faire pour convertir en chaîne ce truc avec des caractères spéciaux ? je ne peux rajouter des trucs que devant et derrière.
2/ avoir une fonction comme greatest ou une sorte de concat avec n arguments ...
3/ écrire une fonction qui me permettrait de savoir si j'ai plus d'un arguments dans une liste. Cette fonction prendrait une liste de n paramètres un peu comme greatest. Ou a defaut si c'est pas faisable un tableau de Varchar2 ...
j'en suis là :
Code:
1 2
| CREATE OR REPLACE
TYPE DUARPDFE.MYTYPE AS VARRAY(5) OF VARCHAR2(50) ; |
Code:
1 2 3 4 5 6 7 8
| CREATE OR REPLACE FUNCTION DUARPDFE.concatenation (t_in MyType) RETURN VARCHAR2 IS
l_return VARCHAR2(32767);
BEGIN
FOR i IN 1..t_in.count LOOP
l_return := l_return || ',' || t_in(i);
END LOOP;
RETURN t_in.count;
END concatenation; |
mais ça ne fonctionne pas, cet appel :
Code:
select duarpdfe.concatenation('ACP' , '118', 'ACP') from dual
me retourne une erreur
Code:
ORA-06553: PLS-306: numéro ou types d'arguments erronés dans appel à 'CONCATENATION'
any idea ???
merci beaucoup en tous cas pour votre aide !