亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > Oracle > 正文

Oracle數據庫返回cursor問題的解決方法

2024-08-29 13:53:06
字體:
來源:轉載
供稿:網友

這篇論壇文章(賽迪網技術社區)著重介紹了Oracle數據庫返回cursor問題的解決方法,詳細內容請參考下文:

昨天使用 Data Block 操作 oracle 返回 cursor 。期間產生了一點問題,很是郁悶,找了一下午也沒有解決。早上睡不著,起來繼續找。結果找到了解決的方法。其實也是怪自己沒有很好的看文檔。在此記錄一下。以使別的同志再出現我的問題的時候,很容易的找到解決的方法。

問題是這樣的:

我在oracle里面有這樣一個過程

PROCEDURE ListAllStatic_Users (cur_Static_User OUT T_CURSOR)

IS

BEGIN

OPEN cur_Static_User FOR

Select * FROM Static_User ;

END ListAllStatic_Users;

我在程序里面如下調用:

Database db = DatabaseFactory.CreateDatabase("oraserver");

string sqlCommand = "Static_UserPackage.ListAllStatic_Users";

DBCommandWrapper dbCommandWrapper =db.GetStoredProcCommandWrapper(sqlCommand);

DataSet dsCustomers = db.ExecuteDataSet(dbCommandWrapper);

DataGrid1.DataSource=dsCstomers;

DataGrid1.DataBind();

結果出現如下問題:

ORA-06550: 第 1 行, 第 7 列: PLS-00306: 調用 'LISTALLSTATIC_USERS' 時參數個數或類型錯誤 orA-06550: 第 1 行, 第 7 列: PL/SQL: Statement ignored

說明: 執行當前 Web 請求期間,出現未處理的異常。請檢查堆棧跟蹤信息,以了解有關該錯誤以及代碼中導致錯誤的出處的詳細信息。


異常詳細信息: System.Data.OracleClient.OracleException: orA-06550: 第 1 行, 第 7 列: PLS-00306: 調用 'LISTALLSTATIC_USERS' 時參數個數或類型錯誤 orA-06550: 第 1 行, 第 7 列: PL/SQL: Statement ignored


源錯誤:


行 44:

行 45: DataSet dsCustomers = db.ExecuteDataSet(dbCommandWrapper);行 46: DataGrid1.DataSource=dsCustomers;

行 47: DataGrid1.DataBind();


我以為是我的參數沒有弄對,于是就加了一句:

 

dbCommandWrapper.AddOutParameter("cur_Static_User",DbType.Object,500);

結果還是一樣的。后來也試驗了

 

OracleCommandWrapper.AddParameter(string,DbType,int,ParameterDirection,bool,byte,byte,string,DataRowVersion,object);

這個方法來添加,也是不行。


后來就上網找了很長時間也沒有什么進展。今天早上起來,還是一籌莫展,偶爾的打開Enterprise Library安裝目錄的Enterprise Library Release Notes.rtf文件,發現里面有這么一段

 

2.4 Data access application Block: Default oracle cursor cur_OUT

 

 

The managed provider for oracle requires you to explicitly bind your reference cursor in your parameter collection. This means you must explicitly create an output parameter for the cursor in your application code. However, that code will not be portable with database systems that do not require a parameter for the cursor. The oracleDatabase allows you to create commands without specifying a cursor. It will create a cursor, named cur_OUT, for commands that execute a stored procedure and do not include an output parameter for the cursor. This means that you can name your reference cursor as "cur_OUT" and the Data Access Application Block will bind it for you; you do not need to explicitly create an output parameter for the cursor. If your stored procedures use a cursor with a name other than "cur_OUT," you must explicitly add a parameter for each cursor to the command. Similarly, if your stored procedure contains multiple cursors, you must explicitly add each cursor parameter to the command.

這下我就明白了。在我的oracle函數中,我的名字 cur_Static_User 和默認的名字cur_OUT不匹配。


于是我就改了我的存儲過程的參數名稱,cur_Static_User改為 cur_OUT。


問題就解決了。


經過試驗,也可以用如下方法用自己的參數名,而不用默認的參數名。

也可以,在一個PROCEDURE中返回多個 CURSOR


我的存儲過程:

 


Procedure STATIC_USER_SelectAll

( cur_OUT_f OUT T_OUT, cur_OUT_g OUT T_OUT)

AS

Begin

OPEN cur_OUT_f FOR Select * from STATIC_USER;

OPEN cur_OUT_g FOR Select * from STATIC_ROLE;

End;


代碼如下:


Database db = DatabaseFactory.CreateDatabase("oraserver");

string sqlCommand = "Static_UserPackage.STATIC_USER_SelectAll";

Microsoft.Practices.EnterpriseLibrary.Data.Oracle.OracleCommandWrapper dbCommandWrapper =(Microsoft.Practices.EnterpriseLibrary.Data.Oracle.OracleCommandWrapper)db.GetStoredProcCommandWrapper(sqlCommand);

dbCommandWrapper.AddParameter("cur_OUT_f", OracleType.Cursor, 0, ParameterDirection.Output, true, 0, 0, String.Empty, DataRowVersion.Default, Convert.DBNull);

dbCommandWrapper.AddParameter("cur_OUT_g", OracleType.Cursor, 0, ParameterDirection.Output, true, 0, 0, String.Empty, DataRowVersion.Default, Convert.DBNull);

DataSet dsCustomers = db.ExecuteDataSet(dbCommandWrapper);

DataGrid1.DataSource=dsCustomers.Tables[0];

DataGrid1.DataBind();

DataGrid2.DataSource=dsCustomers.Tables[1];

DataGrid2.DataBind();


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产91九色视频| 欧美激情图片区| 亚洲永久在线观看| 日韩高清电影免费观看完整版| 精品久久久久久久久久久久久| 美女视频黄免费的亚洲男人天堂| 国产精品福利久久久| 国产精品日韩在线播放| 另类少妇人与禽zozz0性伦| 亚洲免费电影在线观看| 亚洲欧美另类人妖| 欧美亚洲伦理www| 国模私拍一区二区三区| 亚洲国产美女久久久久| 国产有码一区二区| 亚洲第一在线视频| 久久影视电视剧免费网站清宫辞电视| 少妇av一区二区三区| 亚洲女同精品视频| 欧美日韩在线视频一区| 色哟哟入口国产精品| 国产精品成人va在线观看| 成人国产精品av| 97av在线播放| 欧美裸体xxxx| 欧美午夜片欧美片在线观看| 亚洲精品视频在线播放| 日韩精品免费在线播放| 亚洲品质视频自拍网| 欧美理论电影在线播放| 91精品久久久久久综合乱菊| 亚洲石原莉奈一区二区在线观看| 成人观看高清在线观看免费| 亚洲精品福利资源站| 国产精品久久久久久一区二区| 日韩美女在线观看一区| 国产精品极品尤物在线观看| 久久久www成人免费精品| 91精品国产色综合久久不卡98口| 午夜精品一区二区三区在线视频| 欧美成aaa人片在线观看蜜臀| 欧美日韩亚洲视频一区| 久久久999精品| 992tv在线成人免费观看| 伊人伊成久久人综合网站| 亚洲精品福利视频| 欧美日韩亚洲网| 日韩免费观看av| 亚洲a成v人在线观看| 久久国产加勒比精品无码| 在线亚洲午夜片av大片| 欧美激情视频给我| 亚洲女同性videos| 精品高清一区二区三区| 欧美在线免费视频| 精品视频在线导航| 日韩欧美成人精品| 日本不卡视频在线播放| 欧美与黑人午夜性猛交久久久| 久久全球大尺度高清视频| 欧美激情在线有限公司| 91国产中文字幕| 欧美性黄网官网| 国精产品一区一区三区有限在线| 亚洲精品资源美女情侣酒店| 久久天天躁日日躁| 日韩av第一页| 欧美日韩不卡合集视频| 国产99久久精品一区二区永久免费| 性欧美视频videos6一9| 国产一区二区三区直播精品电影| 久久久精品网站| 久久久久久亚洲精品不卡| 91亚洲永久免费精品| 久久手机精品视频| 姬川优奈aav一区二区| 精品亚洲国产成av人片传媒| 久久久久久久国产| 一本一本久久a久久精品综合小说| 91亚洲国产成人精品性色| 色播久久人人爽人人爽人人片视av| 久久这里只有精品视频首页| 青青久久av北条麻妃海外网| 国产精品永久免费在线| 久久久久久久久久久成人| 亚洲一区二区久久| 国产精品video| 亚洲一级片在线看| 成人情趣片在线观看免费| 成人精品在线视频| 欧美午夜影院在线视频| 色综合色综合久久综合频道88| 国产噜噜噜噜噜久久久久久久久| 韩国三级日本三级少妇99| 亚洲成年人影院在线| 欧美另类暴力丝袜| 视频直播国产精品| 国模私拍视频一区| 在线视频欧美日韩精品| 久久久av一区| 国产精品久久久久久久7电影| 91tv亚洲精品香蕉国产一区7ujn| 午夜精品久久久久久久男人的天堂| 国产极品精品在线观看| 成人福利免费观看| 在线日韩欧美视频| 欧美在线一级va免费观看| 欧美精品久久久久a| 欧美成人免费全部| 国产精品欧美日韩一区二区| 久久69精品久久久久久久电影好| www.色综合| 精品视频中文字幕| 色偷偷偷综合中文字幕;dd| 亚洲男人天堂网| 秋霞成人午夜鲁丝一区二区三区| 在线视频欧美日韩精品| www.欧美免费| 69久久夜色精品国产69| 亚洲精品一区二区三区不| 国产精品免费观看在线| 欧美精品在线免费| 亚洲男人的天堂在线播放| 久久久这里只有精品视频| 伊人久久五月天| 国产精品一区二区女厕厕| 日本中文字幕久久看| 国产精品视频久久| 亚洲国产精品视频在线观看| 国产一区二区成人| 国产91精品久久久| 欧美日韩午夜视频在线观看| 午夜精品久久久久久99热软件| 国产精品成熟老女人| 久久视频免费在线播放| 中文字幕综合在线| 久久久久久综合网天天| 国内精品模特av私拍在线观看| 97超级碰在线看视频免费在线看| 欧美一级大片在线免费观看| 综合久久五月天| 高潮白浆女日韩av免费看| 欧美视频免费在线| 精品网站999www| 国产视频丨精品|在线观看| 性欧美xxxx视频在线观看| 欧美日韩国产色视频| 日韩在线国产精品| 久久亚洲欧美日韩精品专区| 狠狠综合久久av一区二区小说| 久久成人18免费网站| 91精品综合久久久久久五月天| 国内精品模特av私拍在线观看| 国产精品女人久久久久久| 国产精品一区久久| 久久91亚洲精品中文字幕奶水| 亚洲码在线观看| 成人激情视频网| 精品美女久久久久久免费| 国产精品爱啪在线线免费观看| 久久精品电影一区二区| 欧美日韩xxxxx| 伊人伊成久久人综合网小说| 国产精品视频免费在线|