Il existe des types prédéfinis dans Oracle, par exemple VARCHAR2.
On peut créer un nouveau type, mais il faut le placer dans la spec d'un package.
Exemple:
1 2 3 4 5 6 7 8 9 10
| create or replace
package jbmtabarg
authid current_user
as
type tab_type_example is table of varchar2(30) index by pls_integer;
function mademo( argun in number ) return number;
end jbmtabarg; |
Ensuite pour accéder au type en dehors de ce package, il faut préfixer le nom du type par le nom du package.
Exemple d'utilisation d'un type custom dans le pl/sql d'un trigger ORACLE FORMS:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| declare
lv_var varchar2(5) := '---';
ln_var number(6) := 0;
tt jbmtabarg.tab_type_example;
begin
tt(0) := 1;
tt(1) := 2;
ln_var := f_test_tableau( tt );
:block3.lv_message := :block3.lv_message || ' - ' || to_char( ln_var );
exception
when others then
message( 'Exc en WBP tableau: ' || sqlerrm );
end; |
Mais il faut faire attention car la ligne:
tt jbmtabarg.tab_type_example;
charge tout le package en mémoire (je crois que c'est dans la library cache).
Pour en arriver à ta demande initiale, voici une fonction qui reçoit en argument une variable de type tableau:
1 2 3 4 5
| FUNCTION f_test_tableau( zz jbmtabarg.tab_type_example) RETURN number IS
BEGIN
return zz(0) * 4 ;
END; |
Hope this helps
Partager