Dengan memakai feature dari oracle database 11g kita akan memakai CREATE_WRAPPED Procedures atau WRAP Functions yang dijelaskan di dokumentasi “Oracle® Database PL/SQL Packages and Types Reference 11g”. berbeda dengan teknik 10g pada 11g jauh lebih simple.
Namun penjelasannya sangat singkat dan membingungkan sehingga perlu penjelasan lebih lanjut. Contoh pemakaian DBMS_DDL.CREATE_WRAPPED ada dua cara:
Dengan bantuan mbah google akhirnya diperoleh contoh pemakaiannya yaitu:- Cara singkat dengan single parameter tipe varchar2:
- Cara detil dengan 3 parameter tipe DBMS_SQL.VARCHAR2A dan PLS_INTEGER
DBMS_DDL.CREATE_WRAPPED ( ddl VARCHAR2);
DBMS_DDL.CREATE_WRAPPED( ddl DBMS_SQL.VARCHAR2A, lb PLS_INTEGER, ub PLS_INTEGER);
- Cara pertama memakai bantuan quote q!' ddl script'! (sumber Tyler Muth’s Blog) :
- Cara kedua (sumber Oracle Base) :
declare l_function varchar2(32767); begin l_function := q'! create or replace function wrap_test return varchar2 is begin return 'Yep, it worked'; end wrap_test; !'; sys.dbms_ddl.create_wrapped(l_function); end; /
DECLARE l_source DBMS_SQL.VARCHAR2A; l_wrap DBMS_SQL.VARCHAR2A; BEGIN l_source(1) := 'CREATE OR REPLACE FUNCTION get_date_string RETURN VARCHAR2 AS '; l_source(2) := 'BEGIN '; l_source(3) := 'RETURN TO_CHAR(SYSDATE, ''DD-MON-YYYY''); '; l_source(4) := 'END get_date_string;'; l_wrap := SYS.DBMS_DDL.WRAP(ddl => l_source, lb => 1, ub => l_source.count); END; /
Contoh hasil wrapping cara pertama :
CREATE OR REPLACE function wrap_test wrapped a000000 369 abcd abcd abcd abcd abcd abcd abcd abcd abcd abcd abcd abcd abcd abcd abcd 8 6e 9a IgQHR6lRS46V6yUCBpIlirzcrOowg8eZgcfLCNL+XhaW8lbjlqFi0e4JptbKschQyiQCfMbK FyjGyu9LTRd8dcDAMv7S1sXWJl7QWWJQzIVWzBZylpfcLszEOdmYkr4WRlutOdsHUzkHVNV8 pqbvCP2M /
Anda bisa juga memakai function DBMS_DDL.WRAP dengan menganalisa dari contoh pemakaian procedure DBMS_DDL.CREATE_WRAPPED.
Tidak ada komentar :
Posting Komentar