Search code examples
oracleoracle11gordbms

not all variables bound in call static procedure


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?


Solution

  • 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))';