2010-02-09 34 views
0

是否可以在Oracle Server中配置隱式鍵入規則(至少是10g)? 如果不是指向規則文檔的鏈接,以及Oracle參數如何影響規則,那就太好了。爲Oracle配置隱式鍵入規則

對於爲例執行此查詢時:

SELECT '' AS A FROM DUAL 

甲骨文將報告A列有VARCHAR(0)型在Oracle 10g和VARCHAR(32)在Oracle 9i上。

感謝

+3

其實,如果你這樣做 創建視圖AV作爲SELECT''AS A FROM DUAL; 並從user_tab_columns中選擇data_type,data_length,其中table_name ='AV'; 你應該看到兩個版本都以CHAR(0)的形式給出結果。 如果9i返回32個字符,我會懷疑光標共享被設置爲強制 – 2010-02-09 21:44:00

+0

Gary你是對的,不同的是由於光標共享參數...我會投票給你的答案,如果你做出一個真正的答案:) 這解決了我們現在正在處理的特定問題,但並未回答我的更一般問題;) – Michel 2010-02-10 07:56:43

回答

1

你可以明確的,它會與Oracle的所有版本:

SQL> CREATE VIEW test AS SELECT CAST(NULL AS VARCHAR2(32)) var32 FROM DUAL; 

View created 

SQL> desc test 
Name Type   Nullable Default Comments 
----- ------------ -------- ------- -------- 
VAR32 VARCHAR2(32) Y       
+0

是的,但我們可以遷移大型應用程序,這會對代碼產生非常大的影響。 – Michel 2010-02-10 08:08:12

0

正如加里說,默認的數據類型是CHAR ....

SQL> create view v23 as select '' a from dual 
    2/

View created 

SQL> desc a 
Name    Null? Type 
------------------ -------- --------------- 
A       CHAR    

你想解決什麼問題?

+0

我們正在將應用程序從Oracle 9i遷移到Oracle 10g。 這種打字差異影響了我們的應用程序,所以我認爲這可以在Oracle中的某處進行配置。然而,正如Gary指出的那樣,差異似乎來自光標共享參數。 謝謝 – Michel 2010-02-10 08:07:31