免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2715 | 回复: 0
打印 上一主题 下一主题

关于调用输入参数为集合的存储过程 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-05-16 19:05 |只看该作者 |倒序浏览
oracle的存储过程支持使用数据集合作为输入参数,如下的例子:
CREATE OR REPLACE PROCEDURE test_cur
(
  p_cursor IN SYS_REFCURSOR,
  p_result OUT NUMBER
) IS
  v_1          VARCHAR2(20);
  v_2          CHAR(1);
  v_3          CHAR(1);
BEGIN
  v_parameters := '...';
  LOOP
    FETCH p_cursor
      INTO v_1, v_2, v_3;
    INSERT INTO test VALUES (v_1, v_2, v_3);
    EXIT WHEN p_cursor%NOTFOUND;
  END LOOP;
  COMMIT;
  p_result := 0;
EXCEPTION
  WHEN OTHERS THEN
    p_result := -1;
END test_cur;

test表是一个有三个字段的测试表,调用此存储过程:
DECLARE
c SYS_REFCURSOR;
r number;
BEGIN
OPEN c FOR  'SELECT OBJECT_ID FROM user_objects where rownum<10';
test_cur(c,r);
CLOSE c;
END;

然后检索test表,有10条数据插入,说明存储过程没有问题;

现在我想通过oci,使用c++实现调用这个存储过程,关键是如何传入集合参数,搜遍各大网站,还是没有找到解决方法,希望有经验的朋友不吝赐教,不胜感激!!


[ 本帖最后由 baiyaj 于 2008-5-16 19:14 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP