oracle 存储过程 游标 出错问题 20
--测试游标功能createorreplaceprocedurepr_testCursorisdeclaretypesp_stest_cursorisrefcursor;...
--测试游标功能
create or replace procedure pr_testCursor is
declare
type sp_stest_cursor is ref cursor;
stest_cursor sp_stest_cursor;
v_testin stest.testin%type;
begin
open stest_cursor for select testin from stest;
loop
fetch stest_cursor into v_testin;
exit when stest_cursor%notfound;
dbms_output.put_line('组名称为:'||v_testin);
end loop;
close stest_cursor;
end;
刚学不太明白问题出在哪?请指点。
Warning: Procedure created with compilation errors
2/1 PLS-00103: 发现了符号 "DECLARE" 当您等待下列事项之一发生时: begin function package pragma procedure subtype type use <ID> <外加双引号的分界 ID> form current cursor external language 符号 "begin" 取代了 "DECLARE" 才可以继续作业.
17/0 PLS-00103: 发现了符号 "end-of-file" 当您等待下列事项之一发生时: begin case declare end exception exit for goto if loop mod null pragma raise return select update while with <ID> <外加双引号的分界 ID> <连结变数> << close current delete fetch lock insert open rollback savepoint set sql execute commit forall merge pipe
我先前语句是像下面写的,在公司里就有错误的,刚在自己的电脑上执行了结果成功的。
请问为什麼要把declare去掉才可以执行OK?
SQL> --测试游标功能
SQL> create or replace procedure pr_testCursor is
2
3 type sp_stest_cursor is ref cursor;
4 stest_cursor sp_stest_cursor;
5 v_testin stest.testin%type;
6 begin
7 open stest_cursor for select testin from stest;
8 loop
9 fetch stest_cursor into v_testin;
10 exit when stest_cursor%notfound;
11 dbms_output.put_line('组名称为:'||v_testin);
12 end loop;
13 close stest_cursor;
14 end;
15 / 展开
create or replace procedure pr_testCursor is
declare
type sp_stest_cursor is ref cursor;
stest_cursor sp_stest_cursor;
v_testin stest.testin%type;
begin
open stest_cursor for select testin from stest;
loop
fetch stest_cursor into v_testin;
exit when stest_cursor%notfound;
dbms_output.put_line('组名称为:'||v_testin);
end loop;
close stest_cursor;
end;
刚学不太明白问题出在哪?请指点。
Warning: Procedure created with compilation errors
2/1 PLS-00103: 发现了符号 "DECLARE" 当您等待下列事项之一发生时: begin function package pragma procedure subtype type use <ID> <外加双引号的分界 ID> form current cursor external language 符号 "begin" 取代了 "DECLARE" 才可以继续作业.
17/0 PLS-00103: 发现了符号 "end-of-file" 当您等待下列事项之一发生时: begin case declare end exception exit for goto if loop mod null pragma raise return select update while with <ID> <外加双引号的分界 ID> <连结变数> << close current delete fetch lock insert open rollback savepoint set sql execute commit forall merge pipe
我先前语句是像下面写的,在公司里就有错误的,刚在自己的电脑上执行了结果成功的。
请问为什麼要把declare去掉才可以执行OK?
SQL> --测试游标功能
SQL> create or replace procedure pr_testCursor is
2
3 type sp_stest_cursor is ref cursor;
4 stest_cursor sp_stest_cursor;
5 v_testin stest.testin%type;
6 begin
7 open stest_cursor for select testin from stest;
8 loop
9 fetch stest_cursor into v_testin;
10 exit when stest_cursor%notfound;
11 dbms_output.put_line('组名称为:'||v_testin);
12 end loop;
13 close stest_cursor;
14 end;
15 / 展开
2个回答
展开全部
把declare去掉是语法问题,你可以看一下create proc的语法,在is/as后面声明的变量是不需要declare的,语法是oracle规定的,不照这样写,它就识别不了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
把declare去掉
更多追问追答
追问
去掉还是不可以的。
追答
create table stest (testin number);
insert into stest values (1);
commit;
Create Or Replace Procedure pr_testCursor Is
Type sp_stest_cursor Is Ref Cursor;
stest_cursor sp_stest_cursor;
v_testin stest.testin%Type;
Begin
Open stest_cursor For
Select testin From stest;
Loop
Fetch stest_cursor
Into v_testin;
Exit When stest_cursor%Notfound;
dbms_output.put_line('组名称为:' || v_testin);
End Loop;
Close stest_cursor;
End;
怎么就不可以,怎么我测试的就可以呢!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询