I define a new type in sql oracle and define a static procedure.
CREATE OR REPLACE TYPE address AS OBJECT(
house_no VARCHAR2 (10),
street VARCHAR2 (30),
city VARCHAR2 (20),
state VARCHAR2 (10),
pincode VARCHAR2 (10),
STATIC PROCEDURE new_address (house_no VARCHAR2,
street VARCHAR2,
city VARCHAR2,
state VARCHAR2,
pincode VARCHAR2)
);
CREATE OR REPLACE TYPE BODY address
AS
STATIC PROCEDURE new_address (house_no VARCHAR2,
street VARCHAR2,
city VARCHAR2,
state VARCHAR2,
pincode VARCHAR2)
IS
sqlstmt VARCHAR (100);
BEGIN
sqlstmt :=
'insert into university.user_address values(address(:name, :name, :name, :name, :name, :name))';
EXECUTE IMMEDIATE sqlstmt
USING house_no,
street,
city,
state,
pincode;
END;
END;
When I called the function user_address it shows error: not all variables bound.
CREATE TABLE user_address OF address
begin
UNIVERSITY.address.new_address('123', 'nazar', 'isfahan','isfahan','9893');
END;
I changed implementing like this (edit sqlstmt with numbers) , but it shows error again.
sqlstmt :=
'insert into university.user_address values(address(:1, :2, :3, :4, :5, :6))';
How do I fix it?
Below line have 6 bind variables where as execute immediate only have 5.
sqlstmt :=
'insert into university.user_address values(address(:name, :name, :name, :name, :name, :name))';