說明:
為了CYQ.Data 架構 CYQ.Data 輕量資料層之路 架構開源系列 索引 引入支援Oralce,繼續努力著。
今天花了半天,總算完成了添加/更新/刪除操作。
繼續記錄今天折騰Oralce遇到的問題:
1:參數化傳參,預設加了個傳回值ReturnValue參數,引發異常--參數個數配對問題。
2:參數的資料類型設定大小設定不能為-1,不然會引發值太大,無法綁定的引異常--參數大小需要指定。
3:參數化語句如:Insert Users(ID,UserName) values(AutoID.nextval,:UserName)--參數用":"
4:參數添加可以加首碼或不加首碼如:
com.Parameters.Add(":UserName",objValue) 或
com.Parameters.Add("UserName",objValue);
5:多語句執行,文法如下:begin 語句1;語句2;end;
樣本:
begin
Insert Users(id,username,url) values(1,'路過秋天','http://cyq1162.cnblogs.com');
update ......;
end;
說明:
只能批量執行insert/update/delete/select ..into等不返回結果的語句。
繼續補充
6:寫了一個測試的預存程序如下:
create or replace package MyPackage as
type cursorResult is ref cursor;
procedure SelectBase(pageIndex int,pageSize int,tableName varchar2,whereStr varchar2,myResult out cursorResult);
end MyPackage;
procedure SelectBase(pageIndex int,pageSize int,tableName varchar2,whereStr varchar2,myResult out cursorResult)
is
mySql varchar2(2000);
begin
mySql='select * from '||tableName;
open myResult for mySql;
end SelectBase;
end MyPackage;
在PL/SQL下Test執行,發現int都顯示成Float型了。
直接介面調用報以下錯誤:
ORA-04063: package body "SA.MYPACKAGE" has errors
ORA-06508: PL/SQL: could not find program unit being called
ORA-06512: at line 1
問題已解決:
這種錯誤都是語法錯誤,把上面的mySql='select...'改成mySql:=‘select...’即可。