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 /
展开
 我来答
情又独中
2012-11-14 · TA获得超过1032个赞
知道小有建树答主
回答量:1220
采纳率:100%
帮助的人:833万
展开全部
把declare去掉是语法问题,你可以看一下create proc的语法,在is/as后面声明的变量是不需要declare的,语法是oracle规定的,不照这样写,它就识别不了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
华夏日长兴
2012-11-12 · TA获得超过9593个赞
知道大有可为答主
回答量:6305
采纳率:85%
帮助的人:3755万
展开全部
把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;

怎么就不可以,怎么我测试的就可以呢!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式