Execute an oracle Function that returns a reference cursor in C#

后端 未结 3 600
不知归路
不知归路 2021-01-17 15:15

I have an oracle package with a procedure that has a in out reference cursor. My understanding is that this is pretty standard.

What I didn\'t like is the fact that

3条回答
  •  挽巷
    挽巷 (楼主)
    2021-01-17 15:56

    I know this is quite an old post, but since it took me so long to figure out all of the minutia involved in getting .NET to "fight nice" with Oracle, I figured I'd put this advice out there for anyone else in this sticky situation.

    I frequently call Oracle stored procedures that return a REF_CURSOR in our environment (.NET 3.5 against Oracle 11g). For a function, you can indeed name the parameter anything you'd like, but then you need to set its System.Data.ParameterDirection = ParameterDirection.ReturnValue then ExecuteNonQuery against the OracleCommand object. At that point the value of that parameter will be the ref_cursor that the Oracle function returned. Just cast the value as an OracleDataReader and loop through the OracleDataReader.

    I'd post the full code, but I wrote the data access layer in VB.NET years ago, and the bulk of the code consuming the data access layer (our corporate intranet) is in C#. I figured mixing languages in a single response would be the larger faux pas.

提交回复
热议问题