2011-10-05 106 views
5

我想在具有特定search_condition的Oracle SQL中查找約束。這樣的事情:在search_condition的值後查詢Oracle約束條件

SELECT constraint_name, constraint_type,search_condition 
FROM USER_CONSTRAINTS 
WHERE table_name ='MYTABLE' AND search_condition = '"myColumn" IS NOT NULL'; 

問題是我得到錯誤「非法使用數據類型LONG」。

我會很感激一個可行的選擇。謝謝!

回答

1

修改您的WHERE子句下半年如下

SUBSTR(search_condition, 1, 21) = 'whatever you're after' 

search_condition是一個long類型和而限制什麼,你可以用它做什麼。 SUBSTR的最後一個參數給出返回的字符串的長度,以便根據需要進行修改。

修改爲我忘了在WHERE子句,基本上創建一個PL/SQL函數來完成上述和使用您的WHERE子句中的限制,

例如

FUNCTION get_long_16(pFormID NUMBER, pSectionItemID NUMBER, pSequence NUMBER) 
    RETURN VARCHAR2 
    AS 
      l_data LONG; 
    BEGIN 
     SELECT far.text_answer 
     INTO l_data 
     FROM form_answers_repeating far 
     WHERE far.form_id = pFormID 
     AND far.section_item_id = pSectionItemID 
     AND far.sequence = pSequence; 

     RETURN SUBSTR(l_data, 1, 16); 
    END; 

由於使用這裏....

+0

我仍然沒有得到我的查詢應該如何。 WHERE table_name ='table'AND get_long_16(search_condition,1,3)='aaa'; ?? – Blitzkr1eg

+0

就是這樣,將函數調用添加到你的where子句:) – OTTA

1

使用

describe USER_CONSTRAINTS ; 

看到search_condition是鍵入LONG。

在Oracle 12上:search_condition_vc將是解決方案。