我有一個如下的物件型別:
CREATE OR REPLACE TYPE MYOBJ AS OBJECT( Att VARCHAR2(200) );
我希望在那里有一些常量屬性。我應該如何編程?我的意思是我希望有類似的東西:
Att CONSTANT VARCHAR2(200) := 'Something'
我可以按規格做嗎?還是在建構式中?有可能嗎?
uj5u.com熱心網友回復:
您不能擁有CONSTANT物件的屬性。
您可以采取兩種替代方法:
- 在建構式中初始化一個非常量值(并且永遠不要改變它);或者
- 創建一個靜態函式:
CREATE OR REPLACE TYPE MYOBJ AS OBJECT(
Att VARCHAR2(200),
CONSTRUCTOR FUNCTION myobj RETURN SELF AS RESULT,
STATIC FUNCTION const_value RETURN VARCHAR2
);
CREATE OR REPLACE TYPE BODY MYOBJ AS
CONSTRUCTOR FUNCTION myobj RETURN SELF AS RESULT
IS
BEGIN
SELF.att := 'ABC';
RETURN;
END;
STATIC FUNCTION const_value RETURN VARCHAR2
IS
BEGIN
RETURN 'ABC';
END;
END;
/
然后:
SELECT MYOBJ().ATT FROM DUAL;
創建物件的實體,在att建構式中初始化屬性,然后回傳它。但是,該值不是常量,因此可以對其進行修改(但如果您從不更改它,那么它將實際上是常量)。
或者你可以呼叫靜態函式:
SELECT MYOBJ.const_value() FROM DUAL;
這將是恒定的,但它不是物件的屬性。
db<>在這里擺弄
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/488357.html
上一篇:PL/SQL使用游標重寫表中的值
