上面存储过程调试是通过了的,
本来都还是可以的
后来我用SQL SERVER的DTS倒一个system表到ORACLE下面后就不行了
不知道是什么原因能恢复吗
我觉得应该存储过程和程序都不应该有问题的
是不是我上面的操作破坏了ORACLE的默认的SYSTEM表?
本来都还是可以的
后来我用SQL SERVER的DTS倒一个system表到ORACLE下面后就不行了
不知道是什么原因能恢复吗
我觉得应该存储过程和程序都不应该有问题的
是不是我上面的操作破坏了ORACLE的默认的SYSTEM表?
jxlb char(1) :='N';
begin
getnewjb1(to_date('20020401','yyyymmdd'),to_date('20030401','yyyymmdd'),jxlb);
end;我直接用这个调用都是说没有声明getnewjb1
晕了
jxlb char(1) :='N';
v_rc pkg_pub.GetNewJb1;
begin
getnewjb1(to_date('20020401','yyyymmdd'),to_date('20030401','yyyymmdd'),jxlb,v_rc);
end;
/估计在delphi在定义一个变量声明游标参数.
问题已经解决
我是重新建立了整个数据库来解决的
我已经可以肯定的知道是那个SYSTEM表导入后引发的这个错误的
但是有谁可以来给我解释一下么?
IS
sqlstr VARCHAR2 (50);
jxlbstr char(4);
BEGIN
if jxlb is null then
jxlb := '';
end if ;
delete from newjb1;
insert into NewJb1(rq,jxlb,lbmc,trans_head,col01,col02,col03,
col04,col05,col06,col07,col08,col09,col10,
col11,col12,col13,col14,col15,col16,col17,
col18,col19,col20_H,col20,col21_H,col21,
col22_H,col22,col23_H,col23,col24_H,col24,
col25_H,col25)
select
tjrq,jxlb,lbmc,trans_head,sum(col01),sum(col02),sum(col03),
sum(col04),sum(col05),sum(col06),sum(col07),sum(col08),sum(col09),sum(col10),
sum(col11),sum(col12),sum(col13),sum(col14),sum(col15),sum(col16),sum(col17),
sum(col18),sum(col19),sum(col20_H),sum(col20),sum(col21_H),sum(col21),
sum(col22_H),sum(col22),sum(col23_H),sum(col23),sum(col24_H),sum(col24),
sum(col25_H),sum(col25)
from NewJb1Rj
where jxlb=jxlb
and tjrq>=startrq
and tjrq<=endrq
group by tjrq,jxlb,lbmc,trans_head; update NewJb1 set col19=col20+col21+col22+col23+col24+col25;
update NewJb1 set col07=col08+col09+col10+col11+col12+col13+col14+col15;
update NewJb1 set col06=col07+col17+col18+col19 ;
update NewJb1 set col01=col02+col03+col05+col06-col04 ;
update NewJb1 set col19_h=decode(col06,null,0,0,0,round((col19/col06)*100,1));
update NewJb1 set col20_h=decode(col06,null,0,0,0,round((col20/col06)*100,1));
update NewJb1 set col21_h=decode(col06,null,0,0,0,round((col21/col06)*100,1));
update NewJb1 set col22_h=decode(col06,null,0,0,0,round((col22/col06)*100,1));
update NewJb1 set col23_h=decode(col06,null,0,0,0,round((col23/col06)*100,1));
update NewJb1 set col24_h=decode(col06,null,0,0,0,round((col24/col06)*100,1));
update NewJb1 set col25_h=decode(col06,null,0,0,0,round((col25/col06)*100,1));
jxlbstr:=jxlb;
sqlstr:='select * from newjb1 where jxlb='||jxlbstr;
OPEN p_rc FOR sqlstr using jxlbstr;
为什么这里不支持动态的啊??
END GetNewJb1;
加上where后面的条件就不行了啊
sqlstr:='select * from newjb1 where jxlb='''||jxlbstr||'''';
多谢但是按照你的提示还是不行编译都不能通过了啊
create table test1(
name varchar2(20),
address varchar2(100)
);declare
type t_CursorRef is REF CURSOR;
v_CorsorVar t_CursorRef;
v_sql varchar2(100);
v_name test1.name%type;
begin
v_name := 'test';
v_sql := 'select * from test1 where name='''||v_name||'''';
open v_CorsorVar for v_sql ;
close v_CorsorVar;
end;
/
from NewJb1Rj
where jxlb=jxlb ----!!字段名和输入参数名称相同,这样是不行的,Oracle会把右边的jxlb当作字段名而非输入参数处理!所以把输入参数jxlb改为in_jxlb之类的!