p_in in varchar2, p_out out
Строки типа
VARCHAR2 передаются очень просто — как данные типа
java.lang.String.
14 15 procedure pass( p_in in varchar2, p_out out varchar2) 16 as 17 language java 18 name 'demo_passing_pkg.pass(java.lang.String, 19 java.lang.String[])';
Для данных типа
CLOB мы используем предоставляемый Oracle Java-тип
oracle.sql.CLOB. С помощью этого типа мы сможем получить входной и выходной потоки данных, используемые для чтения и записи данных типа
CLOB.
20 21 procedure pass(p_in in CLOB, p_out in out CLOB) 22 as 23 language java 24 name 'demo_passing_pkg.pass(oracle.sql.CLOB, 25 oracle.sql.CLOB[])';
Теперь перейдем к наборам: вы видели, что, независимо от типа фактически передаваемого набора, используется один и тот же предоставляемый Oracle тип. Вот почему в данном случае Java-функции не являются перегруженными, как все предыдущие (пока что все вызываемые Java-функции назывались
demo_passing_pkg.pass). Поскольку все типы наборов передаются как один и тот же тип Java, перегрузку имен использовать нельзя — необходимо называть функцию в соответствии с реально передаваемым типом данных:
26 27 procedure pass(p_in in numArray, p_out out numArray) 28 as 29 language java 30 name 'demo_passing_pkg.pass_num_array(oracle.sql.ARRAY, 31 oracle.sql.ARRAY[])'; 32 33 procedure pass(p_in in dateArray, p_out out dateArray) 34 as 35 language java 36 name 'demo_passing_pkg.pass_date_array(oracle.sql.ARRAY, 37 oracle.sql.ARRAY[])'; 38 39 procedure pass(p_in in strArray, p_out out strArray) 40 as 41 language java 42 name 'demo_passing_pkg.pass_str_array(oracle.sql.ARRAY, 43 oracle.sql.ARRAY[])';
Следующие две процедуры демонстрируют сопоставление для типов
RAW
и
INT. SQL-тип
RAW будет сопоставляться встроенному типу
byte
языка Java. Для целых чисел будет использоваться встроенный тип данных
int языка Java:
44 45 procedure pass_raw(p_in in RAW, p_out out RAW) 46 as 47 language java 48 name 'demo_passing_pkg.pass(byte[], byte[][])'; 49 50 procedure pass_int(p_in in number, 51 p_out out number) 52 as 53 language java 54 name 'demo_passing_pkg.pass_int(int, int[])';
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий