您的当前位置:首页oracle数据库中sql%notfound的用法

oracle数据库中sql%notfound的用法

2023-11-11 来源:哗拓教育

SQL%NOTFOUND 是一个布尔值。与最近的sql语句(update,insert,delete,select)发生交互,当最近的一条sql语句没有涉及任何行的时候,则返回true。否则返回false。这样的语句在实际应用中,是非常有用的。例如要update一行数据时,如果没有找到,就可以作相应操作。如:

begin

  update table_name set salary = 10000 where emp_id = 10;

  if sql%notfound then

   insert into table_name (id,name,salary)values("","","") ;

  end if;

end;

当update emp_id为10的这行记录,如果update影响条数为0,则插入一条数据。

 

SQL%FOUND 的用法与sql%notfound用法相反,也是与最近的sql语句发生交互,如果影响行数大于0条,则为true

否则为false。

 

SQL%ROWCOUNT在dml语句执行前是null,执行后,对于select into语句,执行成功则值为1,不成功则值为0。

oracle数据库中sql%notfound的用法

标签:用法   插入   insert   数据库   有用   应用   delete   set   影响   

小编还为您整理了以下内容,可能对您也有帮助:

SQL%NOTFOUND是什么?是ORACLE的全局变量吗

是游标的属性。

cursor%NOTFOUND,布尔值,游标没有获取到结果时为 True。与%FOUND结果相反。

游标名称为 SQL,表明这是一个隐式游标。在程序块中执行一个语句,就会打开一个游标,并自行管理。

BEGIN

    DELETE emp WHERE empno = '7788';

    IF SQL%FOUND THEN

      dbms_output.put_line('删除成功。');

    ELSE

      dbms_output.put_line('没有数据被删除。');

    END IF;       

END;

/

在oracle中%found和%rowcount分别表示什么意思?!

这是用于游标判断是否还有数据的:

Oracle游标常用属性:

%FOUND:变量最后从游标中获取记录的时候,在结果集中找到了记录。

%NOTFOUND:变量最后从游标中获取记录的时候,在结果集中没有找到记录。

比如:

Cursor emps is  
 
 Select * from employees where rownum<6 order by 1;  
 
 Emp employees%rowtype;  
 
 Row number :=1;  
 
Begin  
 
 Open emps; /* 打开静态游标 */  
 
 Fetch emps into emp; /* 读取游标当前行 */  
 
 Loop  
 
 If emps%found then  
 
   Dbms_output.put_line('Looping over record '||row|| ' of ' || emps%rowcount);  
 
   Fetch emps into emp;  
 
   Row := row + 1;  
 
 Elsif emps%notfound then  
 
   Exit;   
 
 End if;  
 
 End loop;

在oracle中%found和%rowcount分别表示什么意思?!

这是用于游标判断是否还有数据的:

Oracle游标常用属性:

%FOUND:变量最后从游标中获取记录的时候,在结果集中找到了记录。

%NOTFOUND:变量最后从游标中获取记录的时候,在结果集中没有找到记录。

比如:

Cursor emps is  
 
 Select * from employees where rownum<6 order by 1;  
 
 Emp employees%rowtype;  
 
 Row number :=1;  
 
Begin  
 
 Open emps; /* 打开静态游标 */  
 
 Fetch emps into emp; /* 读取游标当前行 */  
 
 Loop  
 
 If emps%found then  
 
   Dbms_output.put_line('Looping over record '||row|| ' of ' || emps%rowcount);  
 
   Fetch emps into emp;  
 
   Row := row + 1;  
 
 Elsif emps%notfound then  
 
   Exit;   
 
 End if;  
 
 End loop;

oracle中cursor%NOTFOUND到底是什么意思

cursor%NOTFOUND

表示这个游标没有查到数据

–%FOUND

– SQL 语句影响了一行或多行时为

TRUE

–%NOTFOUND

– SQL 语句没有影响任何行时为TRUE

–%ROWCOUNT

– SQL 语句影响的行数

–%ISOPEN - 游标是否打开,始终为FALSE

Oracle 存储过程 删除表记录时删除不存在的记录也是显示删除成功

删除不存在的数据并不会促发Oracle的异常

对于delete from dept where deptno=p_deptno;

判断是否有数据被删除可以用sql%rowcount,sql%notfound 来判断

if sql%rowcount = 0 then

dbms_output.put_line('部门删除失败...');

end if;

或者

if sql%notfound then

dbms_output.put_line('部门删除失败...');

end if;

显示全文