程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> 數據訪問由SQL Server遷移向Oracle數據庫的問題整理

數據訪問由SQL Server遷移向Oracle數據庫的問題整理

編輯:關於SqlServer
 

在數據訪問由SQL Server遷移向Oracle數據庫時,總會或多或少有些問題,這裡,筆者把一些問題總結出來,希望高手們來幫忙解答。

一、在Oracle查詢出來的字段名均為大寫。

即時在SQL中使用Pascal形式寫語句SELECT FieldName From TableName,返回的結果中字段名仍然為“FILEDNAME”。現解決方法為使用字段別名,語句SELECT FieldName ""FieldName"" From TableName。Oracle數據庫中應該有對此進行控制的開關語句吧,求Oracle高手賜教。

二、Oracle數據庫中沒有Guid(UniqueIdentifier)類型。

可以在Oracle中使用RAW和CHAR類型替代GUID,但因為CHAR使用的長度過長會導致索引分頁太多影響查詢效率。所以盡量使用RAW(16),但注意一點,在.NET Framework中使用Guid的構造函數Guid(Byte[] byteArray)創建出來的Guid的字符串與ByteArray對應的16進制序列會有不同,比較時類型不一致會出現問題。

三、Guid類型的SQL命令參數請使用DbType.RAW,長度16,原因見上。

四、Oracle中沒有現成的Table-Valued Function,需要三步創建,而且在查詢中稍有不同。

1.創建返回的表記錄的類型

  1. create or replace type YourRowType is object (Field1 RAW(16));

2.創建用表記錄組成的表的類型

  1. create or relplace type YourTableType as table of YourRowType;

3.創建函數

  1. create or replace function YourFunction (Parameter1 in RAW)
  2. return YourTableType
  3. as returnValue YourTableType;
  4. Variable1 RAW(16);
  5. begin
  6. {Function Body Partion}
  7. return returnValue;
  8. end;

4.表值函數的查詢

  1. select * from table(YourFunction(parameterVariable));

五、基本查詢語句中T-SQL與PL/SQL的異同。

1.T-SQL參數標識符為“@”,而PL/SQL中為“:”。

2.PL/SQL中無法使用“WITH(NOLOCK)”關鍵字,應該是用事務級別進行控制。

3.T-SQL中使用SELECT @VariableName=Count(*) FROM TableName即可向變量中寫入查詢值,而PL/SQL中需要SELECT COUNT(*) INTO v_variable FROM TableName的形式。

 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved