我在oracle里面创建一个存储过程,往里面插入数据,为什么我个地方会报错啊?这个地方要怎么用??

如题所述

这段代码应该是2部分 ,--上面是存储过程 --的下面是实行存储过程的语句,你这种写法类似于SQLSever的写法,在Oracle的有可能执行不下去。把这两段代码放在两个窗体里执行分开执行,就不会出错了。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-04-06
执行的时候这样
DECLARE
BEGIN
pingpon('男子乒乓球比赛','万军','西欧');
dbms_output.put_line('已经插入成功');
END;

顺便说一句,你创建的时候insert into后,需要commit,否则只在当前session有效,当你页面关闭后,你会发现数据没插进去
改一下
insert into pingpong_matchs(matchid,matchname,palyera,playerb) values (seq_pingpong.nextval,name,a,b);
commit;追问

我改成你那个还是报上面那错误,下面说的是DECLARE关键字不能用,要怎么做?

追答

你是在哪里执行的?
还不行你就把declare去掉,有的工具是不太支持写declare

--直接这样
BEGIN
pingpon('男子乒乓球比赛','万军','西欧');
dbms_output.put_line('已经插入成功');
END;

追问

就是在编写存储过程那个窗口里面,我改成你那个,报这个错

Compilation errors for PROCEDURE ACCP.PINGPON
Error: PLS-00103: 出现符号 "BEGIN"
Line: 13
Text: begin

追答

晕,你存储过程就到end那结束,远程我给你弄吧,我私信你

第2个回答  2013-04-06
没看懂你后面一段时做什么的。你的存储过程在 end pingpom;处已经结束了。
如果你要声明变量的话,在第一个begin的前面就声明。然后执行A,B和a,b两个insert语句。
第3个回答  2013-04-07
你的变量全部写在is 和begin 之间,而且不用declare!
第4个回答  2013-04-06
存储过程应该只包含前面一段,注释号后面的应该是在一个SQL窗口中调试用的,不要和存储过程写在一起
第5个回答  2013-04-07
为什么你的存储过程申明了三个输入参数,但是底下调用的时候传入了四个参数?