Oracle 使用过程处理PL/SQL异常 创建或替换过程UPD\U DEP (部门名称%type中的dd_名称,--必须更新的部门 d_dept.dname%type中的名称)--第一个参数必须更新到的名称 是 abc_例外; 开始 如果(dnamedd_名称),则 提出abc_异常; 如果结束; 更新部门 设置dname=d_名称 其中dname=dd_名称; 犯罪 例外情况 那什么时候例外呢 dbms_output.put_行('您希望更新的部门不存在'); 结束时请戴副;

Oracle 使用过程处理PL/SQL异常 创建或替换过程UPD\U DEP (部门名称%type中的dd_名称,--必须更新的部门 d_dept.dname%type中的名称)--第一个参数必须更新到的名称 是 abc_例外; 开始 如果(dnamedd_名称),则 提出abc_异常; 如果结束; 更新部门 设置dname=d_名称 其中dname=dd_名称; 犯罪 例外情况 那什么时候例外呢 dbms_output.put_行('您希望更新的部门不存在'); 结束时请戴副;,oracle,stored-procedures,plsql,Oracle,Stored Procedures,Plsql,第9行错误:PL/SQL:语句被忽略 7如果(dnamedd_名称),则(第7行) 8提出abc_例外情况;(第8行) 9如果结束,则结束;(第9行) 10更新部门(第10行) 11设置dname=d_名称(第11行) 在第7行中,您引用了dname作为变量,但没有使用该名称的变量。我的第一个假设是,您的意思是d_name,函数的第二个参数,但这没有意义,因为您将跳过更新,除非这两个值相等 根据您在异常处理程序中所做的操作,我猜,if是为了检查是否存在要更新的行,而dname是为了引用表中的实

第9行错误:PL/SQL:语句被忽略

  • 7如果(dnamedd_名称),则(第7行)
  • 8提出abc_例外情况;(第8行)
  • 9如果结束,则结束;(第9行)
  • 10更新部门(第10行)
  • 11设置dname=d_名称(第11行)

在第7行中,您引用了
dname
作为变量,但没有使用该名称的变量。我的第一个假设是,您的意思是
d_name
,函数的第二个参数,但这没有意义,因为您将跳过更新,除非这两个值相等

根据您在异常处理程序中所做的操作,我猜,
if
是为了检查是否存在要更新的行,而
dname
是为了引用表中的实际列。但是,你不能仅仅在奇想中引用PL/SQL代码中间的表列——编译器应该如何理解这个引用?

此外,检查更新是否会影响任何行的最佳方法是执行更新并测试结果

create or replace procedure UPD_DEP 
    (dd_name in dept.dname%type, --department which has to be updated
    d_name in dept.dname%type)   --name to which the first parameter has to be updated 
is 
abc_exception exception;
begin
if (dname<>dd_name) THEN
  raise abc_exception; 
end if;
update dept
set dname=d_name
where dname=dd_name;  
commit;
EXCEPTION
WHEN  abc_exception THEN
dbms_output.put_line('department not present which u want to be updated');
end upd_dep;

请使用花括号按钮设置您的问题格式。它真的解决了我的问题。现在一切都很好。非常感谢。愿上帝让您快乐:)
create or replace procedure UPD_DEP
(dd_name in dept.dname%type, --department which has to be updated
d_name in dept.dname%type) --name to which the first parameter has to be updated
is
begin

update dept
set dname=d_name
where dname=dd_name;

if SQL%FOUND then
  commit;
else
  dbms_output.put_line('department not present which u want to be updated');
end if;

end upd_dep;