- 论坛徽章:
- 0
|
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 编辑 ] |
|