各位大侠,请教个oracle问题,执行一段代码出现错误,希望各位给出解决办法,谢谢谢!
执行一下代码时:--创建一个更改emp表sal字段的存储过程createorreplaceprocedurename_update(enoinnumber,--输入参数,...
执行一下代码时:
--创建一个更改emp表sal字段的存储过程
create or replace procedure name_update
(
eno in number,--输入参数,为emp表的EMPNO字段
newsal in number --输入参数,更改sal字段后的新值
) as
--定义部分,定义一个异常
declare exp_name exception;
pragma exception_init(exp_name,-9856);
--执行部分
begin
update emp set sal=newsal where empno=eno;
--如果输入的eno不在emp表中,触发下面的异常,通知用户根据异常信息解决问题。
if SQL%NOTFOUND THEN
raise exp_name;--触发异常语句
end if;
--下面是异常处理语句
exception
when exp_name then
dbms_output.put_line('emp表中不存在:'||eno||'这个编号!');
end;
报错信息如下:
7/1 PLS-00103: 出现符号 "DECLARE"在需要下列之一时: begin function pragma procedure subtype type <an identifier> <a double-quoted delimited-identifier> current cursor delete exists prior external language 符号 "begin" 被替换为 "DECLARE" 后继续。
22/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 <an identifier> <a double-quoted delimited-identifier> <a bind variable> << continue close current delete fetch lock insert open rollback savepoint set sql execute commit forall merge pipe purge
请问各位高手是什么原因啊???? 展开
--创建一个更改emp表sal字段的存储过程
create or replace procedure name_update
(
eno in number,--输入参数,为emp表的EMPNO字段
newsal in number --输入参数,更改sal字段后的新值
) as
--定义部分,定义一个异常
declare exp_name exception;
pragma exception_init(exp_name,-9856);
--执行部分
begin
update emp set sal=newsal where empno=eno;
--如果输入的eno不在emp表中,触发下面的异常,通知用户根据异常信息解决问题。
if SQL%NOTFOUND THEN
raise exp_name;--触发异常语句
end if;
--下面是异常处理语句
exception
when exp_name then
dbms_output.put_line('emp表中不存在:'||eno||'这个编号!');
end;
报错信息如下:
7/1 PLS-00103: 出现符号 "DECLARE"在需要下列之一时: begin function pragma procedure subtype type <an identifier> <a double-quoted delimited-identifier> current cursor delete exists prior external language 符号 "begin" 被替换为 "DECLARE" 后继续。
22/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 <an identifier> <a double-quoted delimited-identifier> <a bind variable> << continue close current delete fetch lock insert open rollback savepoint set sql execute commit forall merge pipe purge
请问各位高手是什么原因啊???? 展开
2个回答
展开全部
存储过程里不需要用declare关键字,直接这样写就行了:
create or replace procedure name_update
(
eno in number,--输入参数,为emp表的EMPNO字段
newsal in number --输入参数,更改sal字段后的新值
) as
--定义部分,定义一个异常
exp_name exception;
pragma exception_init(exp_name,-9856);
begin
......
end;
create or replace procedure name_update
(
eno in number,--输入参数,为emp表的EMPNO字段
newsal in number --输入参数,更改sal字段后的新值
) as
--定义部分,定义一个异常
exp_name exception;
pragma exception_init(exp_name,-9856);
begin
......
end;
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询