2016-12-02 100 views
1

相應的查詢我有以下查詢這完全在PostgreSQL的:什麼是Oracle數據庫

Select 'Tom' as name 

輸出:

name 
Tom 

應該是什麼在Oracle中相應的查詢?

如果我在Oracle中運行查詢,它會給出錯誤,但在postgresql中成功運行。

+5

您需要從表格中進行選擇。嘗試'選擇'Tom'作爲雙重名稱。 – jarlh

+1

@jarlh感謝它的工作 – dhS

回答

3

如果沒有from子句,Oracle不允許查詢。對於這些類型的查詢,甲骨文提供了一個名爲dual系統表,有一列和一行:

SELECT 'Tom' as name FROM dual 
2

Oracle需要from子句。在這種情況下,你必須使用DUAL表格。

select 'Tom' as name from dual; 
2

甲骨文(據我所知)不尋常除其他RMDBSs,它強制執行,如果你選擇的東西,你必須從表中選擇它。

爲此,有DUAL table。它是一個特殊的,一行,一列的表格,允許你在SQL中選擇常量,函數等,而不必編寫PL/SQL過程。

我說「特殊」,因爲從10g開始,優化程序認識到它與其他表不同,因此可以在生成執行路徑時使用該信息以使其更有效,比使用「正常」一列,一行表。

+2

這裏的Oracle行爲實際上是ANSI SQL兼容的。根據SQL標準,FROM子句是必需的。 – jarlh

+0

@jarlh我對此並不完全確定;我認爲我在某些時候閱讀了它們,並且迎合了選擇常量時不需要FROM子句的事實。但是,我無法找到在線標準的副本,我可以使用它來確認是否爲真! – Boneist

+1

您可以在此處驗證ISO/ANSI SQL語法合規性:http://developer.mimer.com/validator/parser200x/index.tml – jarlh