存储过程out参数是table型的,如何输出?

aoyusky 2009-03-12 04:43:05
存储过程:
type rec1_type is record(place varchar2(80),sekinin number(2));
type tbl1_type is table of rec1_type index by binary_integer;
procedure bulk_insert(
ret out tbl1_type
);

vb.net程序里如何得到返回值?
...全文
212 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
aoyusky 2009-03-23
  • 打赏
  • 举报
回复
好像JAVA里可以的
Dobzhansky 2009-03-13
  • 打赏
  • 举报
回复
试了一下, 好像不行, 测试用的 C# 代码:

DbProviderFactory factory = DbProviderFactories.GetFactory("Oracle.DataAccess.Client");
DbConnection conn = factory.CreateConnection();
conn.ConnectionString = "User Id=scott;Password=tiger;Data Source=ora";
conn.Open();
DbCommand cmd = conn.CreateCommand();
Oracle.DataAccess.Client.OracleCommandBuilder cmdbuilder = (Oracle.DataAccess.Client.OracleCommandBuilder)factory.CreateCommandBuilder();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "mytest.bulk_insert";
// 尝试让 oracle 分析参数的个数和类型
// 这里激发异常 "位于参数位置 1 的 PL/SQL 数据类型不受支持"
Oracle.DataAccess.Client.OracleCommandBuilder.DeriveParameters((Oracle.DataAccess.Client.OracleCommand)cmd);


测试 package, 服务器版本 10.2.0.3 / odp.net 版本 2.111.6.20

create or replace package mytest as
type rec1_type is record(place varchar2(80),sekinin number(2));
type tbl1_type is table of rec1_type index by binary_integer;
procedure bulk_insert(ret out tbl1_type);
end mytest;


create or replace package body mytest as

procedure bulk_insert(ret out tbl1_type)
is
begin
ret(1).place := 'abc';
ret(1).sekinin := 0;
end;

end mytest;


改用游标?
aoyusky 2009-03-13
  • 打赏
  • 举报
回复
没方法吗?
aoyusky 2009-03-12
  • 打赏
  • 举报
回复
版本:10G
用odp.net
Dobzhansky 2009-03-12
  • 打赏
  • 举报
回复
oracle, 还是 10G 以上版本, 你用的微软还是 odp.net 呢?

16,555

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧