首页数据库rowcount(sqlserver存储过程中,set rowcount 0是什么意思)

rowcount(sqlserver存储过程中,set rowcount 0是什么意思)

编程之家 2023-11-01 346次浏览

大家好,感谢邀请,今天来为大家分享一下rowcount的问题,以及和sqlserver存储过程中,set rowcount 0是什么意思的一些困惑,大家要是还不太明白的话,也没有关系,因为接下来将为大家分享,希望可以帮助到大家,解决大家的问题,下面就开始吧!

rowcount(sqlserver存储过程中,set rowcount 0是什么意思)

sqlserver存储过程中,set rowcount 0是什么意思

一般在语句中使用set rowcount是为了使后续的查询、更新、删除操作只影响指定的行数

比如一起执行如下语句

set rowcount 1

SELECT* FROM sysobjects

结果只返回一行,而如果不加set rowcount 1或者使用set rowcount 0

就会返回所有结果

rowcount(sqlserver存储过程中,set rowcount 0是什么意思)

我想你见到的存储过程里包含set rowcount 0的情况是因为之前应该包含set rowcount 1之类大于0的set rowcount设置,是为了使set rowcount 0后边的语句受影响的行数为全部记录。

return @@Rowcount是什么意思

返回上一语句受影响的行数!和@ERROR一样的特性,在每一条语句执行后都将被重置,如果将来使用需要将变量保存到局部变量中。任何不返回的语句都将这个变量置为0!比如经常使用的IF语句。废话少说,上代码!

DECLARE@RowCountVar INT

Update AF_CarOil SET OilType='五号汽油'--执行后@@ROWCOUNT为2

SET@RowCountVar=@@ROWCOUNT--执行后@@ROWCOUNT为1

IF@@ROWCOUNT= 1--执行后@@ROWCOUNT为0

rowcount(sqlserver存储过程中,set rowcount 0是什么意思)

BEGIN

PRINT'影响的行数为1'

PRINT@@ROWCOUNT

END

IF@RowCountVar<> 0

BEGIN

PRINT'受影响的行数为:'+ STR(@RowCountVar)

END

-----------------------------------------------------------------

(2行受影响)

影响的行数为 1

0

受影响的行数为: 2

分析:上面的代码中在执行Update语句之后,受影响的行数为2行,然后将受影响的行数保存到事先声明的局部变量中,赋值语句实际上影响的行数为1行,在下面的IF语句中进行了跳转,这个地方是关键,这并不是Update语句受影响的行数是1,而是将@@ROWCOUNT将的赋给局部变量的过程中变成了1。在执行后IF@@ROWCOUNT= 1的判断之后@@ROWCOUNT的数值重新被赋值为了0!

oracle PLSQL sql%rowcount的几点疑问

1. v_count1 v_coun2只是变量而已,后面的number(3)表示精度,该变量可以接收3位数以内的数字超过则会报错,一般情况下直接写number更好一些,反而不容易出现错误。

2.sql%rowcount用于记录修改的条数,就如你在sqlplus下执行delete from之后提示已删除xx行一样,这个参数必须要在一个修改语句和commit之间放置,否则你就得不到正确的修改行数。

例如:

SQL> declare n number;

2 begin

3 insert into test_a select level lv from dual connect by level<500;

4 n:=sql%rowcount;

5 commit;

6 dbms_output.put_line(n);

7 end;

8/

499

PL/SQL procedure successfully completed.

SQL> declare n number;

2 begin

3 insert into test_a select level lv from dual connect by level<500;

4 commit;

5 n:=sql%rowcount;

6 dbms_output.put_line(n);

7 end;

8/

0

PL/SQL procedure successfully completed.

3.是最后一个select的条数。要统计所有的,可以使用三个变量接收sql%rowcount,然后相加即可,不过貌似直接select的写法无法使用sql%rowcount。

在sql存储过程中@@rowcount<>0是什么意思

@@ROWCOUNT

返回受上一语句影响的行数。

语法

@@ROWCOUNT

返回类型

integer

注释

任何不返回行的语句将这一变量设置为 0,如 IF语句。

示例

下面的示例执行 UPDATE语句并用@@ROWCOUNT来检测是否有发生更改的行。

UPDATE authors SET au_lname='Jones'

WHERE au_id='999-888-7777'

IF@@ROWCOUNT= 0

print'Warning: No rows were updated'

在你的存储过程里意思为如果insert语句影响行了,说明插入成功,即返回值不为0,返回0代表插入不成功

关于rowcount的内容到此结束,希望对大家有所帮助。

metinfo(metinfo的建站水平怎么样) 计算机三级数据库 全国计算机三级数据库考试用的是mysql还是sql server