更新表并输出refcursor记录存储过程Oracle

时间:2018-01-19 15:16:13

标签: oracle stored-procedures plsql

我在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

1 个答案:

答案 0 :(得分:0)

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