2010-09-13 27 views
1

我想從user_tab_columns中使用.Net提取oracle列默認值。 它的數據類型很長,當我使用IDataReader讀取它時,我得到一個空字符串。我如何獲取數據?在.Net中選擇Oracle列的默認值

選擇列名,從USER_TAB_COLUMNS其中列名=「XXX」

回答

1

的LONG數據類型有很多關於其使用限制data_default。解決它的方法之一是建立一個存儲函數是這樣的:

CREATE OR REPLACE FUNCTION column_default 
    (p_table VARCHAR2 
    , p_column 
    ) RETURN VARCHAR2 
IS 
    l_retval LONG; 
BEGIN 
    SELECT data_default 
    INTO l_retval 
    FROM user_tab_columns 
    WHERE table_name = p_table 
    AND column_name = p_column; 

    RETURN l_retval; 
END; 

現在調用該函數從.net,而不是直接進行查詢。

+0

我需要能夠在sql語句中工作的東西,因爲我沒有在該模式中創建函數的權限。 – Noam 2010-09-13 11:52:38

2

如果您正在使用ODP.NET驅動程序

試試這個

OracleCommand dbCommand = new OracleCommand(); 
    dbCommand.InitialLONGFetchSize = 1000; 

的InitialLONGFetchSize限制了LONG類型的字段len個數據

它爲我的作品;

+0

只要我能再次找到時間,我會盡快檢查,謝謝 – Noam 2011-08-08 08:12:32

+0

使用'dbCommand.InitialLONGFetchSize = -1'讀取整個列,而不管大小如何,請參閱:http://docs.oracle.com/cd/B19306_01 /win.102/b14307/featData.htm#i1007197 – 2013-06-17 19:52:23