【发布时间】:2016-01-28 00:16:39
【问题描述】:
我有一个连接到 Oracle 数据库的 C# 应用程序。我动态生成 PL\SQL 语句并使用CommandType=Text 执行它们(我不使用 SP)。
我的select语句是这样的:
DECLARE
-- <declaring>
BEGIN
-- <some PL\SQL code>
OPEN :refCursor FOR SELECT * FROM tablename
-- <some PL\SQL code>
END;
在我的 C# 代码中,refCorsor 是一个类型为 Oracle.DataAccess.Client.OracleDbType.RefCursor 的参数,它使用输出方向添加到我的 OracleCommand 实例的参数中。
在 ExecuteNonQuery 调用返回后,我读取了我的 refCorsor 参数以从我的选择中获取数据。
我的问题是,当我想在 Oracle 中使用 RETURNING BULK COLLECT INTO 子句获取已删除记录时。
如您所知,在 Oracle 中,RETURNING BULK COLLECT INTO 子句可用于在删除语句之后获取已删除记录的列。该子句将数据放入集合中。
DECLARE
TYPE RecordType IS RECORD("Id" INT,"Name" nvarchar2(50));
TYPE IdsTableType IS TABLE OF RecordType;
IdsName IdsTableType;
BEGIN
DELETE FROM "dbo"."AutoInt" WHERE "Name"='aaaa'
returning "Id","Name" BULK COLLECT INTO IdsName;
END;
问题是如何从我的 C# 代码中读取 IdsName 的内容?
【问题讨论】:
-
基本上你的问题是关于
C#,与Oracle PL/SQL无关。但你解释得很好,希望有 C# 技能的人可以提供帮助。 -
不确定这是否有帮助 codeproject.com/Articles/18593/…