0
我創建了一個自己的類型,其構造超載:在插入SQL甲骨文自己的類型重載的構造函數
CREATE TYPE foo_type AS OBJECT(
foo_type INTEGER,
foo_number NUMBER(28, 28),
foo_varchar2 VARCHAR2(4000 CHAR),
CONSTRUCTOR FUNCTION foo_type (data NUMBER) RETURN SELF AS RESULT,
CONSTRUCTOR FUNCTION foo_type (data VARCHAR2) RETURN SELF AS RESULT
)
CREATE TYPE BODY foo_type AS
CONSTRUCTOR FUNCTION foo_type (data NUMBER) RETURN SELF AS RESULT
IS
BEGIN
foo_type := 1;
foo_number := data;
return;
END;
CONSTRUCTOR FUNCTION foo (data VARCHAR2) RETURN SELF AS RESULT
IS
BEGIN
foo_type := 2;
foo_varchar2 := data;
return;
END;
END;
雖然我沒有,只要它是作品超載:
insert into test_table (field) values (foo_type(1, 2.2, 'bar'))
但是,當我寫的不是工作不是在所有的構造函數:
insert into test_table (field) values (foo_type(2.2))
或
insert into test_table (field) values (foo_type('bar'))
此時Oracle說: 「ORA-06553:聲明太多 'foo_type' 符合這個叫」 ,因此:
insert into test_table (field) values (foo_type(foo_varchar2 => 'bar'))
說: 「ORA-009007:缺少右括號」。
我應該改變它是什麼作品?
謝謝。
好的,語法錯誤不在實際代碼中,但這並不重要。 但我的問題是: 不能我通過這一個INSERT INTO說法? – user1949713 2013-02-19 16:58:43
@ user1949713 - 當然,一旦語法錯誤是固定的。沒有從在PL/SQL塊構成的物體,並在'INSERT'聲明這樣做太大的差別。我更新了我的答案以包含正在運行的INSERT語句。 – 2013-02-19 17:04:49
對不起,我不留神..我沒有任何問題。謝謝。 – user1949713 2013-02-19 17:06:52