本文主要是让大家了解这两个语法的功能,同时达到更灵活运用的目的。
首先让我们来看一下这两个语法的介绍:
SQL%ROWCOUNT:How Many Rows Were Affected.
(1)NULL if no SELECT or DML statement has run
(2)Otherwise, the number of rows returned by a SELECT statement or affected by a DML
statement (a PLS_INTEGER)
使用此语法要注意几点:
1、如果使用不带bulk collect的select into 语句,返回多行的话,则会报TOO_MANY_ROWS错误,
并且SQL%ROWCOUNT返回1。
2、如果使用了bulk collect的select into语句,则返回实际影响的行数。
3、如果事务回滚了,则SQL%ROWCOUNT并不是开始事务时的值。
4、如果使用了自主事务,则SQL%ROWCOUNT不会保存原事务值。
The RETURNING INTO clause specifies the variables in which to store the values returned
by the statement to which the clause belongs. The variables can be either individual
variables or collections. If the statement affects no rows, then the values of the
variables are undefined.
关键点:
1.SQL%ROWCOUNT只能够返回影响行数.
2.returning into 可以返回所影响行数的集(字段值、记录值或常量值).
下面我们来做一些测试,以便更好的理解。
准备环节:创建一张测试表
创建一个类型
1、对单行记录,判断影响行数
在这里,我可以使用SQL%ROWCOUNT来判断是否插入成功,也可以根据返回值v_id来判断。returning
后面的字段,既可以使用表的字段,如id,name,也可以使用常量如1,'test'等.这点,对于我们插
入数据时尤为重要,比如,我们插入sys_guid,sysdate时,可以使用此方法获取其值,而不必使用
select into 预定义。
(对于更新、删除和插入是一样的操作)
2、对于多行记录,判断影响行数
在多行的情况下,我们可以看到不能够直接使用returning into到一个值,必须先声明结果集,然
后再返回。同时也体现了returning into的一个优点,能够返所需要的记录,而不必再查询。而
SQL%ROWCOUNT只能够返回影响的行数。
下面再举一下单行记录返回多个值的例子:
总结:有效的使用这两个语法,会给我们的编写程序和逻辑带来更多的灵活性。
分享到:
相关推荐
对于SELECT INTO语句,如果成功执行,`SQL%ROWCOUNT`的值为1,失败则为0。这个变量在需要统计更新或删除了多少行,或者确认SELECT INTO是否成功时非常有用。 在Oracle数据库中,还有许多其他内置的函数和特性,如...
隐式游标不需要显式声明,但它提供了几个有用的属性,如SQL%ROWCOUNT、SQL%FOUND、SQL%NOTFOUND和SQL%ISOPEN,用于检查操作状态和结果。 - **SQL%ROWCOUNT**:返回整型值,表示DML语句成功执行时影响的数据行数。 -...
隐式游标的属性有四种,分别是 SQL %ISOPEN、SQL %FOUND、SQL %NOTFOUND、SQL %ROWCOUNT。这些属性可以用来判断游标的状态和结果,进而控制程序的流程。 在使用游标时,需要注意以下几点: 1. 游标需要在声明部分...
隐式游标的属性有四种:SQL%ROWCOUNT、SQL%FOUND、SQL%NOTFOUND和SQL%ISOPEN。可以通过这些属性来了解操作的状态和结果,进而控制程序的流程。 隐式游标的属性: * SQL%ROWCOUNT:整型,代表DML语句成功执行的数据...
1. **SQL%ROWCOUNT**: 这是一个整型属性,表示DML语句成功执行后影响的数据行数。如果执行了UPDATE或DELETE操作且没有影响任何行,SQL%ROWCOUNT将为0;对于INSERT操作,它表示插入的行数;对于SELECT...INTO...,...
在上述示例中,`SQL%ROWCOUNT`表示受影响的行数,`SQL%NOTFOUND`和`SQL%FOUND`分别表示没有找到匹配的行或找到了至少一行。 通过PLSQL游标编程,我们可以实现更灵活的数据处理,比如循环处理结果集、条件判断等。在...
DML语句执行后,它们的结果会被保存在四个隐式游标属性中:SQL%FOUND、SQL%NOTFOUND、SQL%ROWCOUNT和SQL%ISOPEN。其中,SQL%FOUND和SQL%NOTFOUND是布尔值,用来判断是否找到数据;SQL%ROWCOUNT是一个整数值,表示受...
这个游标有四个关键属性:SQL%FOUND、SQL%NOTFOUND、SQL%ROWCOUNT和SQL%ISOPEN。SQL%FOUND和SQL%NOTFOUND是布尔值,分别表示DML语句是否找到匹配的行;SQL%ROWCOUNT返回受影响的行数。例如,`IF SQL%FOUND THEN ...`...
- Oracle 提供了 SQL%FOUND、SQL%NOTFOUND 和 SQL%ROWCOUNT 等属性来检查游标状态。例如,`SQL%FOUND` 为 TRUE 表示最近一次读取操作成功,而 `SQL%ROWCOUNT` 返回的是从游标中读取的记录数。 6. 实际应用代码: ...
在SQL和Oracle数据库之间,语法存在一些显著的区别。以下是一些关键差异的详细说明: 1. 注释语句: - 在SQL Server中,单行注释使用`--`符号开始,直到行尾。 - Oracle同样支持单行注释`--`,但还提供了多行注释...
- **隐式游标**:Oracle服务器默认使用,自动处理SQL语句的执行结果,提供SQL%ROWCOUNT和SQL%FOUND等属性用于检查执行结果。 - **显式游标**:由程序员定义,提供了更多的控制,如遍历查询结果集,读取每一行数据...
接着,我们检查SQL%FOUND和SQL%ROWCOUNT属性来确定记录是否被成功删除,或者班级代码是否有效。如果记录被删除,会显示删除的记录数;如果记录不存在,将输出相应的错误消息。 总之,Oracle的隐式游标提供了一种...
这个隐式游标有四个属性:SQL%FOUND、SQL%NOTFOUND、SQL%ROWCOUNT和SQL%ISOPEN。例如,SQL%FOUND和SQL%NOTFOUND分别表示是否找到匹配的行,而SQL%ROWCOUNT则返回受影响的行数。这些属性可以用来控制程序流程,例如...
可以通过SQL%ROWCOUNT、SQL%FOUND、SQL%NOTFOUND等属性来检查操作结果。 3. INTO子句 INTO子句用于将查询结果赋值给变量。在PL/SQL中,当使用SELECT语句时,通常与INTO子句结合,将查询结果存储到已声明的变量中。...
隐式游标提供了几个内置的伪列,如`SQL%ROWCOUNT`、`SQL%FOUND`和`SQL%NOTFOUND`,它们可以用来检查操作是否成功以及影响了多少行。 1. **SQL%FOUND**: 当执行了DML操作后,如果游标找到了匹配的行并进行了操作,`...
PL/SQL也支持其他的DML(Data Manipulation Language)语句,如`INSERT`, `UPDATE`, `DELETE`和`LOCK TABLE`,它们在PL/SQL和SQL中的语法基本相同。在这些语句中,可以使用在`DECLARE`部分声明的变量,需要注意变量...
在Oracle数据库环境中,PL/SQL是一种强大的编程语言,它结合了SQL的数据操作能力和结构化编程语句,使得数据库管理、数据处理以及应用开发更为高效。本篇主要关注PL/SQL中的一个重要概念——游标(Cursor),它是...
其中SQL%FOUND和SQL%NOTFOUND用于判断DML语句是否有影响到数据行,SQL%ROWCOUNT用于返回影响的行数,SQL%ISOPEN表示游标是否处于打开状态。 当在PL/SQL块中使用SELECT语句时,需要与INTO子句结合使用,将查询结果...