`
smartyidiot
  • 浏览: 17804 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

SQL%ROWCOUNT 和 RETURNING INTO

 
阅读更多

本文主要是让大家了解这两个语法的功能,同时达到更灵活运用的目的。
首先让我们来看一下这两个语法的介绍:

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只能够返回影响的行数。

下面再举一下单行记录返回多个值的例子:

 

总结:有效的使用这两个语法,会给我们的编写程序和逻辑带来更多的灵活性。

分享到:
评论

相关推荐

    详解Oracle隐式游标和显式游标

    -- sql%rowcount:影响记录条数 sql%found:是否有满足条件的记录 set serveroutput on; declare v_ename a_emp.ename%type; begin select ename into v_ename from a_emp where empno=7788; if sql%found then ...

    JAVA 与 Sql学习笔记

    1.FORALL 用法小结 2.如何使用批挷定提高性能 3.FORALL 如何影响回滚 4.用%BULK_ROWCOUNT 属性计算FORALL迭代...7.用RETURNING INTO子句取回DML结果至集合 8.SQL优化学习笔记 9.给Oracle存储过程传入数组(这是自己的)

    PL/SQL 基础.doc

    PL/SQL 基础,一个不错的 PL/SQL 参考手册。内容预览: ---- 第一章 PL/SQL 简介 ---- 1. Oracle应用编辑方法概览 1) Pro*C/C++/... : C语言和数据库打交道的方法,比OCI更常用; 2) ODBC 3) OCI: C语言和...

    sql总结.doc

    dbms_output.put_line('SQL%ROWCOUNT = '||SQL%COUNT); END; / 执行结果:SQL%ROWCOUNT = 1 (显式游标基本) DECLARE CURSOR mycur IS SELECT * FROM dept; deptinfo dept%ROWTYPE; BEGIN IF mycur%ISOPEN THEN ...

    SQL语句集锦.rar

    工作中常用的SQL + 超复杂SQL 交叉连接查询corss.txt 公交线路问题.txt 。。。。 充储过程--sql0.sql 分割字符串.txt 分布式查询.txt 分组排列进行更新.txt 别名.txt 动态SQL语句.txt 动态语句.txt 区分大小写.txt ...

    SQL实际应用面试题

    一些简单的SQL面试题,仅供大家参考 管理结果集的分页 问:我怎样才能使用SQL Server对结果集的分页进行管理? 答:您经常需要使用一次一页的形式来显示一个结果集,并保证用户可以轻松查看各个结果集页面,特别是...

    SQL21日自学通

    %ROWCOUNT 属性383 Procdure 部分383 BEGIN … … END383 指针控制命令384 条件语句386 LOOPS 循环387 EXCEPTION 部分390 激活EXCEPTION 异常390 异常的处理391 将输入返回给用户392 在PL/SQL 中的事务控制393 让...

    SQL中SET和SELECT赋值的区别

    最近的项目写的SQL比较多,经常会用到对变量赋值,而我... 说到这个,SQL内置的变量:@@ERROR 和 @@ROWCOUNT必须要在一句SQL语句中捕获。如果用set分两句来获取它们,将获取不完整,这时就应该用select来获取值。 */

    亚信科技面试原题数据库

    一、选择题(含单选题和多选题,每题2分,共60分) 在每小题列出的四个备选项中只有1个或2个是符合题目要求的,多选题已用*标识出来,错选或未选均无分。 1、下面哪条SQL语句会返回结果 A. select 1 from dual ...

    SQL语句生成及分析器(中文绿色)

    7、数据库视图创建和重建(目前仅支持Oracle,Sybase,MS_SQL) 8、附加Delphi 5和Delphi 6的控件包,支持Delphi 5,6开发环境 9、SQL语句智能换行 10、其他功能 10.1 SQL文件保存、打开 10.2 支持多个数据库...

    浅谈PDO的rowCount函数

    PDO有一个函数PDOStatement::rowCount返回上一个SQL语句影响的行数。 rowCount函数对于DELETE, INSERT, 或者UPDATE语句的结果是正确的,但对于select语句则与数据库的实现相关。有些数据库在执行select语句时会将结果...

    SQL ASP.NET高性能分页

    SQLServer中有一个Set Rowcount的的设置,它的意思是使命令的处理在响应指定的行数之后停止处理命令,利用这个特点,我们可以借用它来在一个千万行级数据表中实现高性能分页查询。先来说说实现方式: 1、我们来假定...

    oracle总结辅导书

    游标 显式游标 1声明 cursor 名称 is 查询语句 2 打开游标 open 游标名 例: declare Cursor stu_cur is select * from student; begin open stu_cur;...dbms_output.put_line(stu_cur%rowcount); end;

    SQL Server 2008编程入门经典(第3版)

    第9章 SQLServer存储和索引结构 9.1 SQLServer存储机制 9.1.1 数据库 9.1.2 区段 9.1.3 页 9.1.4 行 9.1.5 稀疏列 9.2 理解索引 9.2.1 平衡树(B.树) 9.2.2 SQLServer中访问数据的方式 9.3 创建、修改和删除索引 ...

    SQL.Server.2008编程入门经典(第3版).part2.rar

    SQL Server 2008的新增内容和更改包括:DATE和TIME数据类型、hierarchyID数据类型、MERGE命令和多行插入,以及递归查询等。《SQL Server 2008编程入门经典(第3版)》旨在帮助您快速地掌握Microsoft SQL Selwer2008的...

    SQL.Server.2008编程入门经典(第3版).part1.rar

    SQL Server 2008的新增内容和更改包括:DATE和TIME数据类型、hierarchyID数据类型、MERGE命令和多行插入,以及递归查询等。《SQL Server 2008编程入门经典(第3版)》旨在帮助您快速地掌握Microsoft SQL Selwer2008的...

    sql语句生成与分析器.rar

    7、数据库视图创建和重建(目前仅支持Oracle,Sybase,MS_SQL) 8、附加Delphi 5和Delphi 6的控件包,支持Delphi 5,6开发环境 9、SQL语句智能换行 10、多语言版本 11、其他功能 11.1 SQL文件保存、打开 ...

    PHP PDOStatement::rowCount讲解

    PDOStatement::rowCount — 返回受上一个 SQL 语句影响的行数(PHP 5 >= 5.1.0, PECL pdo >= 0.1.0) 说明 语法 int PDOStatement::rowCount ( void ) PDOStatement::rowCount()返回上一个由对应的 PDOStatement 对象...

    Sql Server 存储过程调用存储过程接收输出参数返回值

    创建存储过程: ALTER PROCEDURE [dbo].[GetCustomers] (@rowcount INT OUTPUT) AS SELECT [CustomerID] ,[CompanyName] ,[ContactName] ,[ContactTitle] ,[Address] ...SET @rowcount=@@rowcount

    sql中循环处理当前行数据和上一行数据相加减

    以下事例,使用游标循环表#temptable中数据,然后让当前行和上一行中的argument1 相加 存放到当前行的 argument2 中,比较简单。 --drop table #temptable create table #temptable ( argument1 int, argument2 ...

Global site tag (gtag.js) - Google Analytics