首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么@@ROWCOUNT变量在IF语句后返回零

@@ROWCOUNT是一个SQL Server系统变量,用于返回最后一个执行的SQL语句所影响的行数。在IF语句后,如果使用了一个影响行数的SQL语句,而且在IF语句之前没有其他修改@@ROWCOUNT值的语句,那么@@ROWCOUNT变量会返回零。

这是因为在IF语句执行之后,SQL Server会重置@@ROWCOUNT的值为零。IF语句是根据条件来决定是否执行其中的代码块,而不会影响@@ROWCOUNT的值。

举个例子,假设有以下代码:

代码语言:txt
复制
IF (条件)
BEGIN
    -- 执行一条影响行数的SQL语句
END

-- 这里的@@ROWCOUNT将会返回零

在这个例子中,如果条件满足并且执行了一条影响行数的SQL语句,那么在IF语句之后的@@ROWCOUNT将会返回零。这是因为IF语句执行完毕后,SQL Server会重置@@ROWCOUNT的值为零。

需要注意的是,如果在IF语句之后有其他修改@@ROWCOUNT值的语句,那么@@ROWCOUNT的值将会被修改为相应的值,而不是零。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云数据库SQL Server:https://cloud.tencent.com/product/cdb_sqlserver
  • 腾讯云云服务器:https://cloud.tencent.com/product/cvm
  • 腾讯云云原生容器服务:https://cloud.tencent.com/product/tke
  • 腾讯云人工智能:https://cloud.tencent.com/product/ai
  • 腾讯云物联网:https://cloud.tencent.com/product/iot
  • 腾讯云移动开发:https://cloud.tencent.com/product/mobdev
  • 腾讯云对象存储:https://cloud.tencent.com/product/cos
  • 腾讯云区块链服务:https://cloud.tencent.com/product/tbaas
  • 腾讯云元宇宙:https://cloud.tencent.com/product/tencent-metaverse
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

使用嵌入式SQL(五)

如果嵌入式SQL类方法中(procedureBlock = ON),则系统会自动将所有这些变量放在PublicList中,并自动将SQLCODE,%ROWID,%ROWCOUNT,%msg以及SQL语句...如需要%ROWCOUNT提供的值,请确保执行其他Embedded SQL语句之前获取其值。根据嵌入式SQL的调用方式,可能必须在输入嵌入式SQL之前新建%ROWCOUNT变量。...完成简单的SELECT语句,%ROWID值将保持不变。Dynamic SQL中,相应的%ROWID属性返回插入,更新或删除的最后一条记录的RowID值。...如果表没有IDENTITY字段,则此函数返回最近修改记录的RowID。SQLCODE运行嵌入式SQL查询,必须在处理输出主机变量之前检查SQLCODE。...根据嵌入式SQL的调用方式,可能必须在输入嵌入式SQL之前新建SQLCODE变量触发代码中,将SQLCODE设置为非值会自动将%ok = 0设置为中止并回滚触发操作。

2.7K20
  • 使用嵌入式SQL(三)

    嵌入式SQL中,可以可以使用文字值的任何位置使用输入主机变量。使用SELECT或FETCH语句的INTO子句指定输出主机变量。...主机变量值具有以下行为:输入主机变量永远不会被SQL语句代码修改。即使嵌入式SQL运行,它们仍保留其原始值。...但是,输入主机变量提供给SQL语句代码之前会被“轻度格式化”:有效数字值将去除前导和尾随,单个前导加号和尾随小数点。...:CName和:CAddr,以局部变量CName中返回所选客户的姓名,并在局部变量CAddr中返回主目录状态。...以下过程块示例中,主机变量zip,city和state以及SQLCODE变量被声明为PUBLIC。 SQL系统变量ROWCOUNT,%ROWID和%msg已经公开,因为它们的名称以%字符开头。

    2.9K10

    通过 PDO 扩展与 MySQL 数据库交互(下)

    2、通过预处理语句进行增删改查 为什么使用预处理语句 关于预处理语句我们在上篇教程中已经简单介绍过,我们可以将其与视图模板类比,所谓预处理语句就是预定义的 SQL 语句模板,其中的具体参数值通过占位符替代...就好比定义的视图模板也是将变量通过特定占位符替代,然后真正渲染时将变量值传递进来填充和渲染一样。 为什么要费这番周折呢?直接用前面演示的 query 方法进行增删改查操作它不香吗?...方法绑定具体参数值,该方法的第一个参数是占位符,第二个参数是参数值,第三个参数是值类型(对应的常量可以 PDO 预定义常量中查询),绑定好参数,就可以调用 PDOStatement 对象的 execute...对于查询操作,可以通过 PDOStatement 对象的 fetch 方法返回单条记录,也可以通过 fetchObject 方法返回映射到指定类的对象实例(也是单条记录),对于多个结果,可以通过 fetchAll...需要注意的是,声明预处理语句的时候,可以通过 ?

    1.5K00

    PHP使用PDO实现mysql防注入功能详解

    ()方法返回结果条数或者受影响的行数 if($stmt- rowCount() 0){ echo "登陆成功!"}...可以看到username=” or 1=1,#注释调了之后的password语句,由于 1=1恒成立,因此这条语句返回大于1的结果集,从而使验证通过。...2、使用quote过滤特殊字符,防止注入 sql语句前加上一行,将username变量中的‘等特殊字符过滤,可以起到防止注入的效果 //通过quote方法,返回带引号的字符串,过滤调特殊字符 $username...()方法返回结果条数或者受影响的行数 if($stmt- rowCount() 0){ echo "登陆成功!"...$stmt- rowCount(); 4、通过bind绑定参数 bindParam()方法绑定一个变量到查询语句中的参数: $sql="insert login(username,password,upic

    1.7K32

    jdbc 中 excute executeUpdate的用法作用

    INSERT、UPDATE 或 DELETE 语句的效果是修改表中行或多行中的一列或多列。executeUpdate 的返回值是一个整数,指示受影响的行数(即更新计数)。...对于 CREATE TABLE 或 DROP TABLE 等不操作行的语句,executeUpdate 的返回值总为。...使用executeUpdate方法是因为 createTableCoffees 中的 SQL 语句是 DDL (数据定义语言)语句。...例如,假定已知某个过程返回两个结果集,则在使用方法 execute 执行该过程,必须调用方法 getResultSet 获得第一个结果集,然后调用适当的 getXXX 方法获取其中的值。...如果返回 int,则意味着结果是更新计数或执行的语句是 DDL 命令。 调用方法 execute 之后要做的第一件事情是调用 getResultSet 或 getUpdateCount。

    86420

    SQL命令 FETCH

    host-variable-list指定一个主机变量或一个逗号分隔的主机变量列表,它们是包含与游标关联的数据的目标。 INTO句是可选的。 如果没有指定,FETCH语句只定位游标。...未打开的游标上尝试FETCH会导致SQLCODE -102错误。 作为SQL语句,这只嵌入式SQL中得到支持。 通过ODBC使用ODBC API支持等价的操作。...INTO子句可以指定为DECLARE语句的子句,也可以指定为FETCH语句的子句,或者两者都指定。 INTO子句允许将fetch列中的数据放到本地主机变量中。...它还将%ROWCOUNT变量设置为获取的行数。 注意:只有当SQLCODE=0时,INTO子句宿主变量返回的值才是可靠的。 如果SQLCODE=100(没有更多数据),则不应该使用主机变量值。...完成一个简单的SELECT语句,%ROWID值是不变的。 FETCH for UPDATE or DELETE 可以使用FETCH来检索要进行更新或删除的行。

    3.2K51

    PHP PDO——单例模式实现数据库操作

    f.lastInsertId:返回最小插入数据库的行。 g.prepare:为执行准备SQL语句,配合绑定操作等,返回语句需要执行PDOStatement。...a.bindColumn:绑定一个PHP变量到结果集的输出列。 b.bindParam:绑定一个PHP变量到预处理语句中的参数。...l.rowCount返回SQL执行的影响条数。 m.setAttribute:设置一个PDOStatement属性。...为了利用PDO的安全性,因此拼接SQL时,需要将用户输入的参数使用占位符进行替换(即在拼接时使用冒号+字段名,或者使用问号),并且完成sql拼接以及PDO类的prepare方法,使用PDOStatement...使用方法:execute方法前,插入一个PDO类的方法beginTransaction(),完成所有执行语句再使用PDO类的方法commit()。

    2.8K80

    PHP中的PDO操作学习(四)查询结构集

    在这段代码中,结果集并不会通过 fetchAll() 方法的返回值赋值给 $list 变量了。因为数据都已经传递给了指定的 getValue() 方法了。...数据库中不管是查询还是增、删、改操作,都会返回语句执行结果,也就是受影响的行数。这些信息都是通过 rowCount() 这个方法获得的。...查询语句返回行数 需要注意的是,查询语句中,有些数据是可能返回语句的行数的。但这种方式不能保证对所有数据有效,且对可移植的应用更不要依赖这种方式。...其实它就像是 PDO 对象的 exec() 方法所返回的数据。不使用预处理语句的情况下,直接使用 PDO 的 exec() 方法执行 SQL 语句返回的也是语句执行受影响的行数。...深入理解了这些扩展类的使用方法,反过来又能帮助我们更加的清楚框架是如何去封装它们的。总之,学习就是不断的从高层到底层,再从底层返回高层,循环往复,才能更加的得心应手。

    1.1K20

    mysql declare 语法_sql_declare等语法 | 学步园

    SET @Variable2 = 2 select f1 into v1 from tab1 select f1,f2,f3 into v1,v2,v3 from tab1 说明: 1.SELECT可以一条语句里对多个变量同时赋值...,而SET只能一次对一个变量赋值 SELECT @VAR1=’Y’,@VAR2=’N’ SET @VAR1=’Y’;SET @VAR2=’N’; 2.表达式返回多个值时,用SET将会出错,而SELECT...没有错误则为。 @@ROWCOUNT : 返回受上一语句影响的行数,任何不返回行的语句将这一变量设置为0。 SQL中@@ROWCOUNT函数:返回受上一语句影响的行数。...@ERROR,当前一个语句遇到错误,则返回错误号,否则返回0。 每一条语句执行都将被重置,如果将来使用需要将变量保存到局部变量中。...SQL Server中提供了一种名为全文索引的技术,可以大大提高从长字符串里搜索数据的速度,本章里,将会对全文索引进行详细的介绍。

    3.8K20

    Oracle数据库学习笔记(七 —— 游标)

    1.1 游标(显示游标) 游标分为显式游标和隐含游标两种 隐含游标用于处理 SELECT INTO和DML语句 显式游标则用于处理SELECT语句返回的多行数据 1.1.1 使用显示游标 -- 定义游标...如果提取到数据,则返回值为TRUE;否则返回FALSE %NOTFOUND 与%FOUND属性恰好相反,如果提取到数据,则返回值为FALSE;否则返回TRUE %ROWCOUNT 返回到当前行为止已经提取到的实际行数...注意: 显示游标 PL/SQL 块的声明部分定义查询,该查询可以返回多行 显示游标的操作过程 数据库 ——> (打开游标)——> 得到数据库的内容 ——> 提取行(得到变量)——> 关闭游标 示例...) 使用显式游标时,需要在定义部分指定其所对应的静态SELECT语句 使用游标变量时,开发人员可以在打开游标变量时指定其所对应的SELECT语句 语法: TYPE ref_type_name IS...) 当执行一条DML语句或者SELECT…INTO语句时,都会创建一个隐含游标 隐含游标的名称是SQL,不能对SQL 游标显式执行OPEN、FETCH和CLOSE语句

    99010

    not for you什么意思_issue to

    INSERT、UPDATE 或 DELETE 语句的效果是修改表中行或多行中的一列或多列。executeUpdate 的返回值是一个整数,指示受影响的行数(即更新计数)。...对于 CREATE TABLE 或 DROP TABLE 等不操作行的语句,executeUpdate 的返回值总为。...使用executeUpdate方法是因为 createTableCoffees 中的 SQL 语句是 DDL (数据定义语言)语句。...例如,假定已知某个过程返回两个结果集,则在使用方法 execute 执行该过程,必须调用方法 getResultSet 获得第一个结果集,然后调用适当的 getXXX 方法获取其中的值。...如果返回 int,则意味着结果是更新计数或执行的语句是 DDL 命令。调用方法 execute 之后要做的第一件事情是调用 getResultSet 或 getUpdateCount。

    88220

    SQL命令 SAVEPOINT

    长期运行的事务或具有内部控制结构的事务中,通常希望能够回滚事务的一部分,而不撤消事务期间提交的所有工作。 保存点的建立会递增$TLEVEL事务级别计数器。...此重复项是回滚到保存点期间检测到的,而不是保存点期间检测到的。当指定具有重复点名的SAVEPOINT语句时, IRIS会递增事务级别计数器,就像点名是唯一的一样。...它将$TLEVEL事务级别计数器重置为,并释放所有锁。请注意,常规回滚会忽略保存点。 COMMIT提交在当前事务期间完成的所有工作。它将$TLEVEL事务级别计数器重置为,并释放所有锁。...ObjectScript事务处理不与SQL锁控制变量交互; 特别需要关注的是SQL锁升级变量。 应用程序不应该尝试混合这两种事务处理类型。...如果事务涉及SQL更新语句,则事务应该由SQL START transaction语句启动,并使用SQL COMMIT语句提交。

    60020

    SQL函数 LAST_IDENTITY

    SQL函数 LAST_IDENTITY 返回最后插入、更新、删除或读取的行的标识的标量函数。 大纲 LAST_IDENTITY() 描述 LAST_IDENTITY函数返回%ROWID局部变量值。...嵌入式SQL或ODBC中将%ROWID局部变量设置为一个值。动态SQL、SQL Shell或管理门户SQL界面未将%ROWID局部变量设置为值。动态SQL改为设置%ROWID对象属性。...对于嵌入式SQL单行(非游标)SELECT语句,LAST_IDENTITY不会更改。返回先前的值(如果有)。 进程启动时,LAST_IDENTITY返回NULL。...新的%RowID之后,LAST_IDENTITY返回NULL。 如果没有行受操作影响,则LAST_IDENTITY不会更改;LAST_IDENTITY返回其先前的值(如果有)。...新的%RowID之后,调用LAST_IDENTITY返回NULL,但调用%ROWID会生错误。 示例 以下示例使用两个嵌入式SQL程序返回LAST_IDENTITY。

    72620

    PLSQL编程—游标

    实质: 是用户远程客户端上对服务器内存区域的操作,由数据库为用户提供这样的 一个指针,使得用户能够去检索服务器内存区的数据。   ...(1)、 指向上下文区域的句柄或指针    (2)、上下文区域-用于SQL处理的内存区    (3)、上下文区域的内容 - 语句处理的行数 -指向语句的语法分析表示的指针   二、游标的类型   ...1.有Oracle在内部声明,由系统管理    2.用于处理 -DML语句   --注意只能用于DML语句哦。...SQL%notfound  --返回Boolean值  存在结果集返回 False    SQL%found    --返回Boolean值   存在结果集返回 True    SQL%rowcount...  --用户成功提取数据的行数    SQL%isopen   --隐式游标里一般这个属性是自动打开和关闭的.且任何时候查询都返回False 示例:向表中插入一行数据,询问是否插入成功. declare

    33130

    Mysql的limit用法

    Mysql的limit用法 强烈推介IDEA2020.2破解激活,IntelliJ IDEA 注册码,2020.2 IDEA 激活码 我们使用查询语句的时候...OFFSET offset   SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset LIMIT 子句可以被用于强制 SELECT 语句返回指定的记录数...如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目。...中小数据量的情况下,这样的SQL足够用了,唯一需要注意的问题就是确保使用了索引: 举例来说,如果实际SQL类似下面语句,那么category_id, id两列上建立复合索引比较好: Sql代码...,需要拼接SQL语句  分页方案三:(利用SQL的游标存储过程分页) 效率最差,但是最为通用  实际情况中,要具体分析。

    2.7K30
    领券