2011-03-28 36 views
1

的值查詢我有一個用戶定義的類型:甲骨文:針對用戶定義類型

create or replace type my_message_type 
    as object (relatedid varchar2(50), payload clob); 

我插入一個消息編程。 SQL Developer將插入的對象呈現爲:

SYNESSO.MY_MESSAGE_TYPE('abcdefgh','[email protected]') 

如何使用SQL查詢此數據?例如,下面似乎直觀:

select count(1) from table_of_my_messages where user_data.relatedid = 'abcdefgh'; 

但是這會導致ORA-00904: "USER_DATA"."RELATEDID": invalid identifier

然後我發現正確的語法是構造消息類型並使用相等性檢查。但是,如何構造類型的實例與一些匹配any字段:

select * from table_of_my_messages where user_data = my_message_type('abcdefgh', *); 
-- ORA-00936: missing expression 

select * from table_of_my_messages where user_data = my_message_type('abcdefgh'); 
-- ORA-02315: incorrect number of arguments for default constructor 

select * from table_of_my_messages where user_data = my_message_type('abcdefgh', ?); 
-- Missing IN or OUT parameter at index:: 1 

回答

3

直觀的版本幾乎是正確的。我只需要別名表,它的工作...

select count(1) from table_of_my_messages m 
    where m.user_data.relatedid = 'abcdefgh'; 
+0

建議你接受你的答案 – 2011-03-29 05:16:43

+0

你需要等待幾天才能做到這一點? – Synesso 2011-03-29 22:14:34