Reputation: 371
Maybe it is a boring question for you, but I did not find an answer until now.
I defined a Vector Type Record in package. How can I use this in SQL?
CREATE OR REPLACE PACKAGE PKG_MATH AS
TYPE VECTOR IS RECORD (
X NUMBER,
Y NUMBER,
Z NUMBER
);
FUNCTION ARC(A VECTOR, B VECTOR) RETURN NUMBER;
END;
How can I use this in SQL
SELECT PKG_MATH.ARC(PKG_MATH.VECTOR(1,1,0),PKG_MATH.VECTOR(1,-1,0)) FROM DUAL;
If I do this I get
ORA-06553 PLS-222: no function with name 'VECTOR' exist
Upvotes: 0
Views: 163
Reputation: 21085
You must define the TYPE in SQL using CREATE TYPE
CREATE TYPE VECTOR IS OBJECT (
X NUMBER,
Y NUMBER,
Z NUMBER
);
/
Than you can use it in the PACKAGEd function:
CREATE OR REPLACE PACKAGE PKG_MATH AS
FUNCTION ARC (A VECTOR, B VECTOR) RETURN NUMBER;
END;
/
CREATE OR REPLACE PACKAGE BODY PKG_MATH AS
FUNCTION ARC (A VECTOR, B VECTOR) RETURN NUMBER AS
BEGIN
return (-1);
END;
END;
/
select PKG_MATH.ARC(VECTOR(1,1,1), VECTOR(0,90,0)) from dual
PKG_MATH.ARC(VECTOR(1,1,1),VECTOR(0,90,0))
------------------------------------------
-1
Upvotes: 1