并非所有变量都绑定在调用静态过程中

时间:2015-12-25 13:48:21

标签: oracle oracle11g ordbms

我在sql oracle中定义了一个新类型并定义了一个静态过程。

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;

当我调用函数user_address时,它显示错误:并非所有变量都被绑定。

 CREATE TABLE user_address OF address

 begin
 UNIVERSITY.address.new_address('123', 'nazar', 'isfahan','isfahan','9893');
 END;

我改变了这样的实现(用数字编辑sqlstmt),但它再次显示错误。

 sqlstmt :=
     'insert into university.user_address values(address(:1, :2, :3, :4, :5, :6))';

我该如何解决?

1 个答案:

答案 0 :(得分:0)

下面有6个绑定变量,其中execute immediate只有5个。

   sqlstmt :=
     'insert into university.user_address values(address(:name, :name,  :name, :name, :name, :name))';