oracle中存储过程中的游标中的insert语句错误捕获有关问题
lijingj& &
oracle中存储过程中的游标中的insert语句异常捕获问题create & or & replace & procedure & pro_DataCopyAndCheck & is
& varchar2(50);
& VARCHAR2(1);
& VARCHAR2(3);
ls_OPR_EMS &
& VARCHAR2(20);
& VARCHAR2(3);
ls_OPR_REV &
& VARCHAR2(20);
ls_SIG_PRD &
& VARCHAR2(1);
ls_FIL_LAME & VARCHAR2(1);
ls_COD_LAME & VARCHAR2(5);
cursor & get70TableData & is
& select & I94_COD_QCP,I94_STA_QCP,I94_LNG_QCP,D94_EMS_QCP,T94_OPR_EMS_QCP,
& I94_REV_QCP,D94_REV_QCP,T94_OPR_REV_QCP,I27_SIG_PRD,
& F94_FIL_LAME,I94_COD_LAME & from & TGED070_QCP_STANGING;
& open & get70TableD
& fetch & get70TableData & into
& ls_COD,ls_STA,ls_LNG,ld_EMS,ls_OPR_EMS,ls_REV,ld_REV,
& ls_OPR_REV,ls_SIG_PRD,ls_FIL_LAME,ls_COD_LAME;
& while & get70TableData%found & loop
& insert & into & TGED070_QCP & values
& (ls_COD,ls_STA,ls_LNG,ld_EMS,ls_OPR_EMS,ls_REV,ld_REV,
& ls_OPR_REV,ls_SIG_PRD,ls_FIL_LAME,ls_COD_LAME);
& EXCEPTION
& when & others & then
& ls_COD & := &
& fetch & get70TableData & into
& ls_COD,ls_STA,ls_LNG,ld_EMS,ls_OPR_EMS,ls_REV,ld_REV,
& ls_OPR_REV,ls_SIG_PRD,ls_FIL_LAME,ls_COD_LAME;
& Close & get70TableD
end & pro_DataCopyAndC
PL/SQL中的错误信息:
PROCEDURE & SYSTEM.PRO_DATACOPYANDCHECK & 编译错误
错误: & PLS-00103: & 出现符号 &
&EXCEPTION &在需要下列之一时:
& begincasedeclareend
& exitforgotoifloopmodnullpragmaraisereturnselectupdatewhile
& with &an & identifier&
&a & double-quoted & delimited-identifier&
&a & bind & variable&
& &closecurrentdeletefetchlockinsertopen
& rollbacksavepointsetsqlexecutecommitforallmerge
请输入您的回答...
:: 最近更新> oracle中存储过程中的游标中的insert语句错误捕获有关问题
oracle中存储过程中的游标中的insert语句错误捕获有关问题
lijingj & &
发布时间: & &
浏览:273 & &
回复:0 & &
悬赏:0.0希赛币
oracle中存储过程中的游标中的insert语句异常捕获问题create & or & replace & procedure & pro_DataCopyAndCheck & is
& varchar2(50);
& VARCHAR2(1);
& VARCHAR2(3);
ls_OPR_EMS &
& VARCHAR2(20);
& VARCHAR2(3);
ls_OPR_REV &
& VARCHAR2(20);
ls_SIG_PRD &
& VARCHAR2(1);
ls_FIL_LAME & VARCHAR2(1);
ls_COD_LAME & VARCHAR2(5);
cursor & get70TableData & is
& select & I94_COD_QCP,I94_STA_QCP,I94_LNG_QCP,D94_EMS_QCP,T94_OPR_EMS_QCP,
& I94_REV_QCP,D94_REV_QCP,T94_OPR_REV_QCP,I27_SIG_PRD,
& F94_FIL_LAME,I94_COD_LAME & from & TGED070_QCP_STANGING;
& open & get70TableD
& fetch & get70TableData & into
& ls_COD,ls_STA,ls_LNG,ld_EMS,ls_OPR_EMS,ls_REV,ld_REV,
& ls_OPR_REV,ls_SIG_PRD,ls_FIL_LAME,ls_COD_LAME;
& while & get70TableData%found & loop
& insert & into & TGED070_QCP & values
& (ls_COD,ls_STA,ls_LNG,ld_EMS,ls_OPR_EMS,ls_REV,ld_REV,
& ls_OPR_REV,ls_SIG_PRD,ls_FIL_LAME,ls_COD_LAME);
& EXCEPTION
& when & others & then
& ls_COD & := &
& fetch & get70TableData & into
& ls_COD,ls_STA,ls_LNG,ld_EMS,ls_OPR_EMS,ls_REV,ld_REV,
& ls_OPR_REV,ls_SIG_PRD,ls_FIL_LAME,ls_COD_LAME;
& Close & get70TableD
end & pro_DataCopyAndC
PL/SQL中的错误信息:
PROCEDURE & SYSTEM.PRO_DATACOPYANDCHECK & 编译错误
错误: & PLS-00103: & 出现符号 &
&EXCEPTION &在需要下列之一时:
& begincasedeclareend
& exitforgotoifloopmodnullpragmaraisereturnselectupdatewhile
& with &an & identifier&
&a & double-quoted & delimited-identifier&
&a & bind & variable&
& &closecurrentdeletefetchlockinsertopen
& rollbacksavepointsetsqlexecutecommitforallmerge
本问题标题:
本问题地址:
温馨提示:本问答中心的任何言论仅代表发言者个人的观点,与希赛网立场无关。请对您的言论负责,遵守中华人民共和国有关法律、法规。如果您的言论违反希赛网问答中心的规则,将会被删除。
暂无合适的专家
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&在存储过程中建一个动态游标后如何循环取游标指向的记录并插入另一个表中 - Oracle开发当前位置:& &&&在存储过程中建一个动态游标后如何循环取游标指向的在存储过程中建一个动态游标后如何循环取游标指向的记录并插入另一个表中&&网友分享于:&&浏览:757次在存储过程中建一个动态游标后怎么循环取游标指向的记录并插入另一个表中?我的存储过程:
create & or & replace & procedure & test(a & in & string, & EDate & in & string) & is
& type & cur_t & is & ref &
& c_FACT_PATI & cur_t;
& varchar2(5000);
& rst & xx.table_insert%
& str & := &
' & select & PRODUCT_NUMBER, ';
& str & := & str & || &
' & a.INCEPT_ROOM & as & room_id, ';
& str & := & str & || &
& b.PLACE, ';
& str & := & str & || &
& sum(Amount) & as & NewSumAmount ';
& str & := & str & || &
' & from & table1 & a, ';
& str & := & str & || &
& table2 &
& b, ';
& str & := & str & || &
& table3 &
& c ';
& str & := & str & || &
' & where & a.IN_ID & = & b.in_id ';
& str & := & str & || &
& and & a.AFFIRM_SIGN & = & 1 ';
& str & := & str & || &
& and & b.NUMBER & = & c.id ';
& str & := & str & || &
& and & to_char(I_DATE, &
' & || &
' ' 'yyyy-MM-dd ' ' ' & || &
') ' & || & a & || &
' ' ' ' & ||
& EDate & || &
' ' ' ';
& str & := & str & || &
& group & by & PRODUCT_NUMBER, & a.INCEPT_ROOM, & b.PLACE ';
& open & c_FACT_PATI & for &
& fetch & c_FACT_PATI & into &
& exit & when & c_FACT_PATI%
& insert & into & table_insert
& (USERID, & PRODUCT_ID, & ROOMID, & PLACEID, & AMOUNT)
& rst.PRODUCT_NUMBER,
& rst.room_id,
& rst.PLACE,
& rst.NewSumAmount);
& close & c_FACT_PATI;
后面的循环插入的写法是错误的,请各位高手教教正确的写法是怎样的?------解决方案--------------------create or replace procedure test(a in string, EDate in string) is
execute immediate
insert into table_insert
(USERID, PRODUCT_ID, ROOMID, PLACEID, AMOUNT)
select 8,PRODUCT_NUMBER,a.INCEPT_ROOM as room_id,b.PLACE,sum(Amount) as NewSumAmount
from table1 a,
where a.IN_ID = b.in_id
and a.AFFIRM_SIGN = 1
and b.NUMBER = c.id
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 12345678910 Copyright & &&版权所有& & 第一种情况是返回的游标是某个具体的表或视图的数据,如:& & SQL-Code:& & 复制代码代码如下:& & CREATE OR REPLACE PROCEDURE P_TESTA (& & PRESULT OUT SYS_REFCURSOR& & )& & AS& & BEGIN& & OPEN PRESULT FOR SELECT * FROM USERS;& & END P_TESTA;& & 其中USERS就是数据库中一个表。在调用的时候只要声明一个该表的ROWTYPE类型就可以了:& & SQL-Code:& & 复制代码代码如下:& & CREATE OR REPLACE PROCEDURE P_TESTB& & AS& & VARCURSOR SYS_REFCURSOR;& & R USERS%ROWTYPE;& & BEGIN& & P_TESTA(VARCURSOR);& & LOOP& & FETCH VARCURSOR INTO R;& & EXIT WHEN VARCURSOR%NOTFOUND;& & DBMS_OUTPUT.PUT_LINE(R.NAME);& & END LOOP;& & END P_TESTB;& & 第二种情况,我们返回的不是表的所有的列,或许只是其中一列或两列,如:& & SQL-Code:& & 复制代码代码如下:& & CREATE OR REPLACE PROCEDURE P_TESTA (& & PRESULT OUT SYS_REFCURSOR& & )& & AS& & BEGIN& & OPEN PRESULT FOR SELECT ID,NAME FROM USERS;& & END P_TESTA;& & 这里我们只返回了USERS表的ID,NAME这两个列,那么调用的时候也必须做相应的修改:& & SQL-Code:& & 复制代码代码如下:& & CREATE OR REPLACE PROCEDURE P_TESTB& & AS& & VARCURSOR SYS_REFCURSOR;& & CURSOR TMPCURSOR IS SELECT ID,NAME FROM USERS WHERE ROWNUM=1;& & R TMPCURSOR%ROWTYPE;& & BEGIN& & P_TESTA(VARCURSOR);& & LOOP& & FETCH VARCURSOR INTO R;& & EXIT WHEN VARCURSOR%NOTFOUND;& & DBMS_OUTPUT.PUT_LINE(R.ID);& & END LOOP;& & END P_TESTB;& & 与之前不同的是我们声明了一个游标类型的变量TMPCURSOR ,注意TMPCURSOR 的结构必须与存储过程P_TESTA 返回的游标结构一致,否则就会出现错误。同理只要保持两个游标类型结构一致,就可以实现自由调用。& & 您可能感兴趣的文章:mysql动态游标学习(mysql存储过程游标)Oracle存储过程返回游标实例详解mysql存储过程 游标 循环使用介绍SQL Server的通用分页存储过程 未使用游标,速度更快!sqlserver 函数、存储过程、游标与事务模板mysql存储过程中使用游标的实例& & QQ空间
百度搜藏更多& & Tags:存储过程 调用& & 复制链接收藏本文打印本文关闭本文返回首页& & 上一篇:Oracle 创建用户及数据表的方法& & 下一篇:Oracle排名函数(Rank)实例详解& & 相关文章解决Hibernate JPA中insert插入数据后自动执行select last_inseroracle12c安装报错:PRVF-0002的解决方法修改计算机名或IP后Oracle10g服务无法启动的解决方法oracle异常(预定义异常,自定义异常)应用介绍Oracle Max函数使用中出现的问题在oracle 数据库查询的select 查询字段中关联其他表的方法在Tomcat服务器下使用连接池连接Oracle数据库优化Oracle停机时间及数据库恢复oracle保留两位小数解决方案ORCLE 表中列的修改& & 文章评论& & 最 近 更 新& & oracle使用to_date查询一周的第一天日期解决Oracle删除重复数据只留一条的方法详ORACLE常见错误代码的分析与解决(二)ORACLE数据库查看执行计划的方法Hibernate Oracle sequence的使用技巧深入Oracle字符集的查看与修改详解ORA-12514及ORA-28547错误解决方案新Orcas语言特性-查询句法简单三步轻松实现ORACLE字段自增oracle SQL解析步骤小结& & 热 点 排 行& & ORACLE 10g 安装教程[图文]oracle常用sql语句oracle sqlplus 常用命令大全oracle 触发器 学习笔记ORACLE常用数值函数、转换函数、Oracle数据库下载及安装图文操作oracle中的视图详解oracle 查询表名以及表的列名ORACLE数据库查看执行计划的方法oracle 存储过程和函数例子
声明:该文章系网友上传分享,此内容仅代表网友个人经验或观点,不代表本网站立场和观点;若未进行原创声明,则表明该文章系转载自互联网;若该文章内容涉嫌侵权,请及时向
上一篇:下一篇:
相关经验教程
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.003 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益oracle存储过程的参数游标应该怎样来赋值??
[问题点数:20分,结帖人wildwave]
oracle存储过程的参数游标应该怎样来赋值??
[问题点数:20分,结帖人wildwave]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2007年1月 Oracle大版内专家分月排行榜第三2006年11月 Oracle大版内专家分月排行榜第三
2007年1月 Oracle大版内专家分月排行榜第三2006年11月 Oracle大版内专家分月排行榜第三
2011年3月 Oracle大版内专家分月排行榜第二2011年2月 Oracle大版内专家分月排行榜第二
2010年10月 Oracle大版内专家分月排行榜第三
2011年3月 Oracle大版内专家分月排行榜第二2011年2月 Oracle大版内专家分月排行榜第二
2010年10月 Oracle大版内专家分月排行榜第三
2011年3月 Oracle大版内专家分月排行榜第二2011年2月 Oracle大版内专家分月排行榜第二
2010年10月 Oracle大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。