我在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
答案 0 :(得分:0)
问题不在我提到的任何代码中,而是在其他地方撒谎。我使用测试脚本在表中插入记录,但我错过了在脚本末尾添加Commit 我最近从SQL Server切换到了Oracle。事务处理是oracle和SQL SERVER之间最大的差异。 我是这样的。无论如何,谢谢你们。