游标要有参数:CURSOR PcCur(p_date varchar2) IS SELECT * FROM pc_117 where PC_NO=PcNo AND to_char(STOREDATE,'yyyymmdd')=p_date; begin OPEN PcCur(UpdateDate); ......
sorry 看漏了眼,还要多加一个参数.CURSOR PcCur(p_pcno varchar2,p_date varchar2) IS SELECT * FROM pc_117 where PC_NO=p_pcno AND to_char(STOREDATE,'yyyymmdd')=p_date; begin OPEN PcCur(PcNo,UpdateDate); .......
请先参考以下例子,问题出在你语句上:create or replace procedure pc_117proce2( p_holid in varchar2,p_holname in varchar2 ) as cURSOR PcCur(v_holid varchar2,v_holname varchar2) IS SELECT holname FROM holiday where holid=v_holid AND holname=v_holname; pcrec varchar(20); BEGIN OPEN PcCur(p_holid,p_holname); FETCH PcCur INTO PcRec; CLOSE PcCur; dbms_output.put_line(pcrec); END pc_117proce2; /SQL> set serveroutput on SQL> begin 2 pc_117proce2('1','公出'); 3 end; 4 / 公出请细心考虑代码出错在那吧!
34/17 PLS-00103: 出现符号 "VARCHAR2"在需要下列之一时: .(),*@%&|=-+</>atinmod notrangerem=>..<an exponent (**)><> or != or ~=>=<=<>andor likeasbetweenfromusingis nullis not||is dangling34行是 OPEN PcCur(PcNo varchar2,UpdateDate varchar2);请问是怎么回事
没有看我的代码吗? 打开游标时参数不能有类型定义.改为如下: OPEN PcCur(PcNo,UpdateDate);
begin
OPEN PcCur(UpdateDate);
......
begindeclareexitforgotoif
loopmodnullpragmaraisereturnselectupdatewhile<an identifier>
<a double-quoted delimited-identifier><a bind variable><<
closecurrentdeletefetchlockinsertopenrollbacksavepointsetsql
executecommitforall<a single-quoted SQL string>43/36 PLS-00103: 出现符号 "="在需要下列之一时:
.(,*@%&-+;/atmodremreturn
returning<an exponent (**)>where||
符号 ".在 "=" 继续之前已插入。LINE/COL ERROR哪里的问题
begin
OPEN PcCur(PcNo,UpdateDate);
.......
请问,你设的p_pcno,p_date 这两个字段和PcNo,UpdateDate是同一个字段吗,是你手误,还是需要另设这样。
LINE/COL ERROR
-------- -----------------------------------------------------------------
34/17 PLS-00103: 出现符号 "VARCHAR2"在需要下列之一时:
.(),*@%&|=-+</>atinmod
notrangerem=>..<an exponent (**)><> or != or ~=>=<=<>andor
likeasbetweenfromusingis nullis not||is dangling34/46 PLS-00103: 出现符号 ";"在需要下列之一时:
return37/1 PLS-00103: 出现符号 "END"在需要下列之一时:
begindeclareexitforgotoif
loopmodnullpragmaraisereturnselectupdatewhile<an identifier>LINE/COL ERROR
-------- -----------------------------------------------------------------
<a double-quoted delimited-identifier><a bind variable><<
closecurrentdeletefetchlockinsertopenrollbacksavepointsetsql
executecommitforall<a single-quoted SQL string>如何解决?
p_holid in varchar2,p_holname in varchar2
)
as
cURSOR PcCur(v_holid varchar2,v_holname varchar2) IS
SELECT holname FROM holiday where holid=v_holid AND holname=v_holname;
pcrec varchar(20);
BEGIN
OPEN PcCur(p_holid,p_holname);
FETCH PcCur INTO PcRec;
CLOSE PcCur;
dbms_output.put_line(pcrec);
END pc_117proce2;
/SQL> set serveroutput on
SQL> begin
2 pc_117proce2('1','公出');
3 end;
4 /
公出请细心考虑代码出错在那吧!
.(),*@%&|=-+</>atinmod
notrangerem=>..<an exponent (**)><> or != or ~=>=<=<>andor
likeasbetweenfromusingis nullis not||is dangling34行是 OPEN PcCur(PcNo varchar2,UpdateDate varchar2);请问是怎么回事
打开游标时参数不能有类型定义.改为如下:
OPEN PcCur(PcNo,UpdateDate);