En PL/SQL orientado a objetos, puedo agregar procedimientos y funciones de miembros a tipos. Un ejemplo se da aquí:Llamar a los procedimientos de miembros de PL/SQL orientados a objetos de Oracle desde JDBC
create type foo_type as object (
foo number,
member procedure proc(p in number),
member function func(p in number) return number
);
create type body foo_type as
member procedure proc(p in number) is begin
foo := p*2;
end proc;
member function func(p in number) return number is begin
return foo/p;
end func;
end;
Desde: http://www.adp-gmbh.ch/ora/plsql/oo/member.html
En PL/SQL, entonces me puedo llamar a estos procedimientos miembros/funciones como este:
declare
x foo_type;
begin
x := foo_type(5);
x.proc(10);
dbms_output.put_line(x.func(2));
end;
cómo puedo hacer con ¿CallableStatement de JDBC? Parece que no puedo encontrar esto en la documentación fácilmente.
NOTA: Esta es una de las posibilidades, inlining el tipo constructor:
CallableStatement call = c.prepareCall(
" { ? = call foo_type(5).func(2) } ");
Pero lo que estoy buscando es algo como esto (usando java.sql.SQLData
como parámetro):
CallableStatement call = c.prepareCall(
" { ? = call ?.func(2) } ");
Además, las funciones miembro, los procedimientos pueden modificar el objeto. ¿Cómo puedo recuperar el objeto modificado en Java?
es el núcleo de su pregunta realmente "¿Cómo llamar a una función de miembro"? ¿O es más bien "Cómo pasar un objeto como parámetro"? – Codo
@Codo: El núcleo es cómo recuperar los resultados de la función miembro (ejemplo de respuesta dada por Vincent Malgrat), y cómo recuperar el objeto potencialmente modificado –