我們正在內部引入一個新項目,而以前我們所有的工作都在SQL Server上,新產品使用了oracle後端。開發人員從SQL Server遷移到Oracle
任何人都可以建議任何嬰兒牀牀單或類似的東西給像我這樣的SQL Server人一個主要區別的概要 - 希望能夠儘快起牀和運行。
我們正在內部引入一個新項目,而以前我們所有的工作都在SQL Server上,新產品使用了oracle後端。開發人員從SQL Server遷移到Oracle
任何人都可以建議任何嬰兒牀牀單或類似的東西給像我這樣的SQL Server人一個主要區別的概要 - 希望能夠儘快起牀和運行。
@hamishcmcn
你斷言''== Null根本不是真的。在關係世界裏,空值只能被理解爲「我不知道」。當您將值與Null進行比較時,您從Oracle(以及大多數其他體面的數據庫)得到的唯一結果是'False'。
關閉我的頭頂SQL Server和Oracle之間的主要區別是:
大家對多個Oracle實例否則,請幫助我並添加更多內容。
注意空字符串處理方式的差異。
INSERT INTO atable (a_varchar_column) VALUES ('');
相同
INSERT INTO atable (a_varchar_column) VALUES (NULL);
我沒有sqlserver
經驗,但我明白,這兩個
區分我從SQL Server遷移到Oracle是注意到的主要區別在Oracle中,您需要在SELECT語句中使用遊標。 另外,臨時表的使用方式也不相同。在SQL Server中,您可以在過程中創建一個,然後在最後刪除它,但在Oracle中,應該已經在執行過程之前創建了一個臨時表。
我會看看數據類型,因爲它們很不相同。
如果需要,你可以創建和使用Execute Immediate命令刪除程序中的臨時表。
@hamishmcn
普遍認爲是一個壞主意..應該只是被創建並留下在Oracle臨時表(除非它一次關閉/很少使用)。臨時表的內容對每個會話都是本地的,並在會話關閉時截斷。支付創建/刪除臨時表的成本幾乎沒有意義,如果兩個進程試圖同時創建表並且意外地執行DDL,則甚至可能導致衝突。
你在這裏提出的問題是一個巨大的話題,尤其是因爲你沒有真正地說過你正在使用數據庫(例如,你打算從TSQL - > PL/SQL或者只是改變後端數據庫Java應用程序連接到?)
如果你是嚴重的使用你的數據庫選擇的項目後備,那麼我建議你挖一個深一點,並宣讀由湯姆·凱特像Expert Oracle Database Architecture: 9i and 10g Programming Techniques and Solutions。
字符串連接:
Oracle:||或CONCAT()
SQL服務器:+
這些鏈接可能是有趣:
http://www.dba-oracle.com/oracle_news/2005_12_16_sql_syntax_differences.htm
http://www.mssqlcity.com/Articles/Compare/sql_server_vs_oracle.htm(舊:Ora9 VS SQL 2000)
到andy47,我不是那個意思,你可以使用比較中的空字符串,但是如果在插入中使用它,oracle會將它視爲null。 重新閱讀我的條目,那麼試試下面的SQL:
CREATE TABLE atable (acol VARCHAR(10));
INsERT INTO atable VALUES('');
SELECT * FROM atable WHERE acol IS NULL;
,並避免了「的確是這樣,不,它不是」的情況下,here is an external link
此鏈接提供了很多的有用的總結主要區別: [oracle和ms sql server的區別](http://www.bristle.com/Tips/SQL.htm#differences_between_oracle_and_ms_sql_server) – 2008-09-06 19:47:59