oracle使用游标作为传入参数如何处理

love145299 2014-01-18 02:02:55
如下:
create or replace PROCEDURE insert_pmc_t_d(
p_PMC_TOTAL in CURSOR ,
p_PMC_TOTAL_DETAILS in CURSOR
)
AS
BEGIN
FOR c1 IN p_PMC_TOTAL LOOP
Insert Into T_PMC_TOTAL(ID,PMC_YEAR,MONTHS,DEPARTMENT_CODE,OPERATOR,HANDLING_DATES,NUMBERS,REMARKS,OPERATOR_PZ,OPERATE_SH,OPERATOR_HQ)
Values(SE_T_PMC_TOTAL.NEXTVAL,c1.PMC_YEAR,c1.MONTHS,c1.DEPARTMENT_CODE,c1.OPERATOR,c1.HANDLING_DATES,c1.NUMBERS,c1.REMARKS,c1.OPERATOR_PZ,c1.OPERATE_SH,c1.OPERATOR_HQ);

UPDATE maxbh
set numbers=c1.numbers
where names='T_PMC_TOTAL';
end loop;



FOR c2 IN p_PMC_TOTAL_DETAILS LOOP
Insert Into T_PMC_TOTAL_DETAILS(ID,COMMODITIES_MALE_N,AMOUNTS,NUMBERS,NUMBERS_MALE,REMARKS)
Values(SE_T_PMC_TOTAL_DETAILS.NEXTVAL,c2.COMMODITIES_MALE_N,c2.AMOUNTS,c2.NUMBERS,c2.NUMBERS_MALE,c2.REMARKS);

UPDATE maxbh
set numbers=c2.numbers
where names='T_PMC_TOTAL_DETAILS';
end loop;


commit;


END;

提示
错误(1): PL/SQL: Compilation unit analysis terminated
错误(3,25): PLS-00201: 必须声明标识符 'CURSOR'
新手分不多求大神指点
...全文
877 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
你google一下试过没有,假如oracle不支持你就换个思路。 把用参数传递进来,建立游标处理。
love145299 2014-01-20
  • 打赏
  • 举报
回复
引用 4 楼 z_shousi 的回复:
你google一下试过没有,假如oracle不支持你就换个思路。 把用参数传递进来,建立游标处理。
没有找到相关资料啊,以前是以为可以传入游标,程序写了一大半然后发现这个问题,如果要该方法就会很麻烦改动量比较大所以想确认下有没有这种做法
love145299 2014-01-18
  • 打赏
  • 举报
回复
引用 1 楼 zhaoxiangchong 的回复:
cursor是不可以直接作为参数传入存储过程的,你试试sys_refcursor或者REF cursor这种类型
试过了不行啊是不是oracle不支持游标作为入参呢
love145299 2014-01-18
  • 打赏
  • 举报
回复
试过了不行啊是不是oracle不支持游标作为入参呢
善若止水 2014-01-18
  • 打赏
  • 举报
回复
cursor是不可以直接作为参数传入存储过程的,你试试sys_refcursor或者REF cursor这种类型

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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