在Oracle 11g中我有以下类型:调用带有默认值的PL/SQL构造函数和命名参数
CREATE OR REPLACE TYPE "T_XMLTABLE" AS OBJECT (
zeile NUMBER,
spalte NUMBER,
wert VARCHAR2(1000),
xml NUMBER,
link VARCHAR2(1000),
target VARCHAR2(100),
srt NUMBER,
typ NUMBER,
format VARCHAR2(100),
uebersetzbar NUMBER,
tooltip VARCHAR2(100),
kommentar NUMBER,
output NUMBER,
CONSTRUCTOR FUNCTION t_xmltable(p_zeile NUMBER,
p_spalte NUMBER,
p_wert VARCHAR2,
p_xml NUMBER,
p_link VARCHAR2 DEFAULT NULL,
p_target VARCHAR2 DEFAULT NULL,
p_srt NUMBER DEFAULT 0,
p_typ NUMBER DEFAULT 1,
p_format VARCHAR2 DEFAULT NULL,
p_uebersetzbar NUMBER DEFAULT 0,
p_tooltip VARCHAR2 DEFAULT NULL,
p_kommentar NUMBER DEFAULT 0,
p_output NUMBER DEFAULT 7) RETURN SELF AS RESULT
)
CREATE OR REPLACE TYPE BODY t_xmltable AS
CONSTRUCTOR FUNCTION t_xmltable(p_zeile NUMBER,
p_spalte NUMBER,
p_wert VARCHAR2,
p_xml NUMBER,
p_link VARCHAR2 DEFAULT NULL,
p_target VARCHAR2 DEFAULT NULL,
p_srt NUMBER DEFAULT 0,
p_typ NUMBER DEFAULT 1,
p_format VARCHAR2 DEFAULT NULL,
p_uebersetzbar NUMBER DEFAULT 0,
p_tooltip VARCHAR2 DEFAULT NULL,
p_kommentar NUMBER DEFAULT 0,
p_output NUMBER DEFAULT 7) RETURN SELF AS RESULT
AS
BEGIN
self.zeile := p_zeile;
self.spalte := p_spalte;
self.wert := p_wert;
self.xml := p_xml;
self.link := p_link;
self.target := p_target;
self.srt := p_srt;
self.typ := p_typ;
self.format := p_format;
self.uebersetzbar := p_uebersetzbar;
self.tooltip := p_tooltip;
self.kommentar := p_kommentar;
self.output := p_output;
RETURN;
END;
END;
正如你所看到的,它有相当一些成员,这是通过构造函数初始化与默认值。之前,我们已经得到了构造,类型已启动这样的:
t_xmltable(zeile => v_y,
spalte => v_x,
wert => 'someval',
xml => 1337,
link => NULL,
target => NULL,
srt => 0,
typ => 1,
format => NULL,
uebersetzbar => 1,
tooltip => NULL,
kommentar => 0,
output => 7);
现在,我公司推出的构造函数来摆脱不必要的默认值。但看起来,这些默认值不能与命名参数一起使用。我真的不想失去它们的舒适感,并且重构所有使用该类型的代码将会非常麻烦。
以下工作:
DECLARE
x t_xmltable;
BEGIN
x := t_xmltable(1, 1, 'a', 1);
END;
下不:
DECLARE
x t_xmltable;
BEGIN
x := t_xmltable(zeile => 1, spalte => 1, wert => 'a', xml => 1);
END;
有一个人得到了一些巧妙的想法如何解决这个问题?
为什么要关闭问题而不是接受答案? (Przemyslaw在我之前略微到达了那里,讨厌* 8-)这不是一个只是一个错字的问题,国际海事组织,虽然我认为它可以说是接近... –
嗯,你说得对。接受@ Przemyslaw的答案。再次感谢 – Joshua
@Alex Poole Yea,我不认为回答本网站上的问题会给他们带来这个“刺激”因素:)每次我发送答案时我都想知道是否有人在我之前没有发过一个;)约书亚,谢谢。 –