Trong PL/SQL hướng đối tượng, tôi có thể thêm các thủ tục và hàm thành viên vào các kiểu. Một ví dụ được đưa ra ở đây:Gọi thủ tục thành viên PL/SQL hướng đối tượng Oracle từ 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;
Từ: http://www.adp-gmbh.ch/ora/plsql/oo/member.html
Trong PL/SQL, tôi có thể gọi tới các thủ tục thành viên/chức năng như thế này:
declare
x foo_type;
begin
x := foo_type(5);
x.proc(10);
dbms_output.put_line(x.func(2));
end;
Làm thế nào tôi có thể làm điều đó với JDBC's CallableStatement? Tôi không thể tìm thấy điều này trong tài liệu một cách dễ dàng.
LƯU Ý: Đây là một khả năng, nội tuyến kiểu constructor:
CallableStatement call = c.prepareCall(
" { ? = call foo_type(5).func(2) } ");
Nhưng những gì tôi đang tìm kiếm là một cái gì đó như thế này (sử dụng java.sql.SQLData
như một tham số):
CallableStatement call = c.prepareCall(
" { ? = call ?.func(2) } ");
Ngoài ra, chức năng thành viên, thủ tục có thể sửa đổi đối tượng. Làm thế nào tôi có thể lấy lại đối tượng đã sửa đổi trong Java?
là cốt lõi của câu hỏi của bạn thực sự "Làm thế nào để gọi một chức năng thành viên"? Hoặc là nó thay vì "Làm thế nào để vượt qua một đối tượng như một tham số"? – Codo
@Codo: Cốt lõi là cách truy xuất các kết quả hàm của thành viên (ví dụ câu trả lời được đưa ra bởi Vincent Malgrat) và cách truy xuất đối tượng có khả năng được sửa đổi chính nó –