新聞中心
求解答啊,在數(shù)據(jù)訪問由SQL Server遷移向Oracle數(shù)據(jù)庫時,總會或多或少有些問題,這里,筆者把一些問題總結(jié)出來,希望高手們來幫忙解答。

一、在Oracle查詢出來的字段名均為大寫。
即時在SQL中使用Pascal形式寫語句SELECT FieldName From TableName,返回的結(jié)果中字段名仍然為“FILEDNAME”?,F(xiàn)解決方法為使用字段別名,語句SELECT FieldName ""FieldName"" From TableName。Oracle數(shù)據(jù)庫中應(yīng)該有對此進(jìn)行控制的開關(guān)語句吧,求Oracle高手賜教。
二、Oracle數(shù)據(jù)庫中沒有Guid(UniqueIdentifier)類型。
可以在Oracle中使用RAW和CHAR類型替代GUID,但因為CHAR使用的長度過長會導(dǎo)致索引分頁太多影響查詢效率。所以盡量使用RAW(16),但注意一點,在.NET Framework中使用Guid的構(gòu)造函數(shù)Guid(Byte[] byteArray)創(chuàng)建出來的Guid的字符串與ByteArray對應(yīng)的16進(jìn)制序列會有不同,比較時類型不一致會出現(xiàn)問題。
三、Guid類型的SQL命令參數(shù)請使用DbType.RAW,長度16,原因見上。
四、Oracle中沒有現(xiàn)成的Table-Valued Function,需要三步創(chuàng)建,而且在查詢中稍有不同。
1.創(chuàng)建返回的表記錄的類型
- create or replace type YourRowType is object (Field1 RAW(16));
2.創(chuàng)建用表記錄組成的表的類型
- create or relplace type YourTableType as table of YourRowType;
3.創(chuàng)建函數(shù)
- create or replace function YourFunction (Parameter1 in RAW)
- return YourTableType
- as returnValue YourTableType;
- Variable1 RAW(16);
- begin
- {Function Body Partion}
- return returnValue;
- end;
4.表值函數(shù)的查詢
- select * from table(YourFunction(parameterVariable));
五、基本查詢語句中T-SQL與PL/SQL的異同。
1.T-SQL參數(shù)標(biāo)識符為“@”,而PL/SQL中為“:”。
2.PL/SQL中無法使用“WITH(NOLOCK)”關(guān)鍵字,應(yīng)該是用事務(wù)級別進(jìn)行控制。
3.T-SQL中使用SELECT @VariableName=Count(*) FROM TableName即可向變量中寫入查詢值,而PL/SQL中需要SELECT COUNT(*) INTO v_variable FROM TableName的形式。
原文鏈接:http://www.cnblogs.com/richardc2k/archive/2011/03/18/1987971.html
【編輯推薦】
- SQL Server 2008中的代碼安全
- SQL Server 2011中基于列的存儲方式
- MongoDB1.8發(fā)布,分布式文檔數(shù)據(jù)庫
- 困擾中小型企業(yè)數(shù)據(jù)精簡部署的六大問題
本文名稱:數(shù)據(jù)訪問由SQLServer遷移向Oracle數(shù)據(jù)庫的問題整理
路徑分享:http://m.5511xx.com/article/dppcphp.html


咨詢
建站咨詢
