create or replace type Spoint as object(
x float,
y float,
member function distance(p in Spoint)
return float
);
create or replace type body Spoint as
member function distance (p in Spoint)
return float
is
result float;
begin
result := ((x-p.x)*(x-p.x)+(y-p.y)*(y-p.y));
return result
end distance;
end; create table testpoint of Spoint
insert into testpoint values(4.0,5.0)
insert into testpoint values(1.0,1.0)
select * from testpoint
declare
p1 Spoint;
p2 Spoint;
rest float;
begin
p1 := Spoint(4.0,5.0);
p2 := Spoint(1.0,1.0);
rest := p1.distance(p2);
dbms_output.put_line(rest);
end;declare段运行时报错,是什么问题?
x float,
y float,
member function distance(p in Spoint)
return float
);
create or replace type body Spoint as
member function distance (p in Spoint)
return float
is
result float;
begin
result := ((x-p.x)*(x-p.x)+(y-p.y)*(y-p.y));
return result
end distance;
end; create table testpoint of Spoint
insert into testpoint values(4.0,5.0)
insert into testpoint values(1.0,1.0)
select * from testpoint
declare
p1 Spoint;
p2 Spoint;
rest float;
begin
p1 := Spoint(4.0,5.0);
p2 := Spoint(1.0,1.0);
rest := p1.distance(p2);
dbms_output.put_line(rest);
end;declare段运行时报错,是什么问题?
member function distance (p in Spoint)
return float
is
result float;
begin
result := ((x-p.x)*(x-p.x)+(y-p.y)*(y-p.y));
return result;
end distance;
end;return result;掉了;编译不会通过,声明时当然报错了
store procedure "sys.spoint"有错误
该怎么解决呢
Connected.
SQL> create or replace type spoint as object (
2 x float,
3 y float,
4 member function distance(p in spoint)
5 return float
6 );
7 /Type created.SQL> create or replace type body spoint as
2 member function distance (p in spoint)
3 return float
4 is
5 result float;
6 begin
7 result := ((x - p.x) * (x - p.x) + (y - p.y) * (y - p.y));
8 return result;
9 end distance;
10 end;
11 /Type body created.SQL> create table testpoint of spoint;Table created.SQL> insert into testpoint values (4.0,5.0);1 row created.SQL> insert into testpoint values (1.0,1.0);1 row created.SQL> select * from testpoint; X Y
---------- ----------
4 5
1 1SQL> declare
2 p1 spoint;
3 p2 spoint;
4 rest float;
5 begin
6 p1 := spoint(4.0,5.0);
7 p2 := spoint(1.0,1.0);
8 rest := p1.distance(p2);
9 dbms_output.put_line(rest);
10 end;
11 /PL/SQL procedure successfully completed.SQL> set serveroutput on
SQL> /
25PL/SQL procedure successfully completed.
set serveroutput on
不确定是否可行,oracle调用java的方法是可以的
create or replace library MYLIB
as 'C:\oracle\ora90\LIB\dll.dll';CREATE OR REPLACE FUNCTION myadd (a binary_integer,b binary_integer) RETURN binary_integer AS
LANGUAGE C NAME "mul"
LIBRARY MYLIB
PARAMETERS (a int,b int,
RETURN int );
select myadd(2,3) from dual但要在对象的一个成员函数中调用DLL中的方法就不知道该怎么做了?java中怎么实现的呢?
冒昧的问下你的QQ号,以后好请教你问题,谢谢