PL / SQLは初めてですが、Oracleでカスタム表タイプを使用してビューを作成する際に問題が発生します。作成されるタイプは次のとおりです。
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には、2つの異なるタイプのコントロール(c_control、g_control)が、いくつかの共通フィールドを持つ異なるテーブルに格納されています。タイプに関係なく、すべての異なるコントロールを選択するビューを作成しようとしているので、UNION句を使用します。ここに私のビュー作成ステートメントがあります(より簡単にするためにいくつかの微妙な変更があります):
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として選択するにはどうすればよいですか?前もって感謝します