【发布时间】:2018-01-19 15:16:13
【问题描述】:
我在 Oracle 包中创建了一个过程。当我从 TOAD 执行包时,我可以在输出中看到更新的记录。但是当通过控制台应用程序调用时,相同的过程返回 0 条记录。我不知道为什么。
可能是我在某个地方犯了一个新手错误,但请让我知道我在这里做错了什么。
PROCEDURE TestProc( Cur_Result out sys_refcursor)
As
begin
Update Table1 where condition-1;
Commit;
Update Table1 where condition-2;
Commit;
open Cur_Result for
select * from Table1;
END TestProc;
使用 .NET 代码从控制台应用程序调用过程 -
从 TOAD - 从模式浏览器执行包。
控制台应用程序 - 调用如下过程 -
Using conn As New OracleConnection(ConfigurationManager.ConnectionStrings("CS").ConnectionString)
conn.Open()
cmd = New OracleCommand(SchemaName & "." & "TestProc", conn)
cmd.Parameters.Add("CUR_RESULT", OracleType.Cursor).Direction = ParameterDirection.Output
cmd.CommandType = CommandType.StoredProcedure
da = New OracleDataAdapter(cmd)
ds = New DataSet
da.Fill(ds)
''''Do something with DataSetRecords
conn.Close()
End Using
【问题讨论】:
-
更新的输出记录我没有看到任何显示它的地方。发布您的确切代码
-
你怎么称呼这个?在 TOAD 和控制台中。
-
用更多信息更新了我上面的问题。
-
可能是
cmd = New OracleCommand(SchemaName & "." & "TestProc(:CUR_RESULT)", conn)? -
使用
DataTable而不是DataSet。DataSet的目的是有几个DataTables的集合,在你的程序中不是这样的。
标签: oracle stored-procedures plsql