我是PL/SQL的新手,我在使用Oracle中的自定義表類型創建視圖時遇到問題。這些都是創建的類型:Oracle,帶聯合子查詢的cast和multiset
create or replace
TYPE "Control" AS OBJECT ("Date" nvarchar2(10), "R" number(7,3), "Limit(7,3);
create or replace TYPE Controls AS TABLE OF "Control";
CREATE OR REPLACE TYPE Result_typ AUTHID CURRENT_USER AS OBJECT (
"Program" varchar(10),
"ID_User" nvarchar2(25),
"Controls" Controls,
)
在DB,我們有兩種不同類型的存儲在與一些常見的領域有不同的表控制(c_control,g_control)。我試圖創建一個視圖選擇所有不同的控件,儘管他們的類型,所以我使用UNION子句。 在這裏有我的看法創建語句(有一些微妙的變化,使其simplier):
CREATE OR REPLACE VIEW "all_controls" OF Result_typ
with object IDENTIFIER ("ID_User")
as SELECT 'MYAPP' as Program,
u.user_id as "ID_User",
CAST(MULTISET(
select to_char(control_date,'yyyy-mm-dd') as "Date",
r as "R",
limit as "Limit"
from g_control
where control_date between to_date('20130310','yyyymmdd')
and to_date('20130313','yyyymmdd')
UNION
select to_char(control_date,'yyyy-mm-dd') as "Date",
r as "R",
limit as "Limit",
from control
where and control_date between to_date('20130310','yyyymmdd')
and to_date('20130313','yyyymmdd')
) AS Controls)
FROM user u
WHERE u.user_name like 'Scott';
當執行從SQL Developer中的語句,返回的值是「SQL錯誤:沒有更多的數據從套接字讀取」 。 在MULTISET中執行UNION有什麼問題嗎?我如何選擇UNION結果作爲MULTISET? 在此先感謝
什麼是g_control?表或其他類型?創建示例數據,例如表,數據... – Art 2013-03-12 15:07:32
如果您是PL/SQL對象的新手,那麼最糟糕的地方就是開始。即使是強化的PL/SQL從業者也會發現它們粗糙。從另一種語言如sJava帶來面向對象的經驗並沒有幫助;事實上,這可能會讓事情變得更加困難,因爲Oracle OO的實施非常特殊。 – APC 2013-03-12 16:06:20
另外,有了代碼,請確保你已經發布了整個源代碼。您的樣本目前不完整。 – APC 2013-03-12 16:08:40