if @@rowCount>0
在这段之前的语句执行了
这之后的语句没有执行
但是察看数据库的时候发现这之后的语句应该执行
问一下@@rowCount应不应该这么用?
@@rowCount在SqlServer中应该是全局静态变量吧?
在这段之前的语句执行了
这之后的语句没有执行
但是察看数据库的时候发现这之后的语句应该执行
问一下@@rowCount应不应该这么用?
@@rowCount在SqlServer中应该是全局静态变量吧?
返回受上一语句影响的行数。
在这段之前的语句执行了
这之后的语句没有执行
但是察看数据库的时候发现这之后的语句应该执行
-------------------------------------这段话就看不懂了.
if @@rowcount>0
b语句--未执行(应该执行)
这样好懂不?
if (@@rowcount>0)
b语句--未执行(应该执行)
--test
--查询一:
select * from sysobjects ->0
--查询二:select @@rowcount -- 0 or 1if (1=1)
select @@rowcount --0select 1 union
select 3select @@rowcount --2
@@rowCount在SqlServer中是全局静态变量.
返回受上一语句影响的行数。
select * from t
select @@ROWCOUNT
Transact-SQL 语句可以通过下列方式设置 @@ROWCOUNT 的值:将 @@ROWCOUNT 设置为受影响或被读取的行的数目。可以将行发送到客户端,也可以不发送。
保留前一个语句执行中的 @@ROWCOUNT。
将 @@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'
如果返回了数据那么
@@rowCount里面以行为单位保存一个数字就是你用查询分析器执行一个语句然后看他返回多少行那么他的@@rowCount就等于多少
@@ROWCOUNT
备注
Transact-SQL 语句可以通过下列方式设置 @@ROWCOUNT 的值:将 @@ROWCOUNT 设置为受影响或被读取的行的数目。可以将行发送到客户端,也可以不发送。
保留前一个语句执行中的 @@ROWCOUNT。
将 @@ROWCOUNT 重置为 0 但不将该值返回到客户端。
执行简单分配的语句始终将 @@ROWCOUNT 值设置为 1。不将任何行发送到客户端。这些语句的示例如下:SET @local_variable、RETURN、READTEXT 以及不带查询Select 语句,如 SELECT GETDATE() 或 SELECT 'Generic Text'。在查询中执行分配或使用 RETURN 的语句将 @@ROWCOUNT 值设置为受查询影响或由查询读取的行数,例如:SELECT @local_variable = c1 FROM t1。数据操作语言 (DML) 语句将 @@ROWCOUNT 值设置为受查询影响的行数,并将该值返回到客户端。DML 语句不会将任何行发送到客户端。DECLARE CURSOR 和 FETCH 将 @@ROWCOUNT 值设置为 1。EXECUTE 语句保留前一个 @@ROWCOUNT。USE、SET <option>、DEALLOCATE CURSOR、CLOSE CURSOR、BEGIN TRANSACTION 或 COMMIT TRANSACTION 等语句将 ROWCOUNT 值重置为 0。返回类型
int示例
以下示例执行 UPDATE 语句并使用 @@ROWCOUNT 来检测是否更改了任何一些行。 复制代码
USE AdventureWorks;
GO
UPDATE HumanResources.Employee
SET Title = N'Executive'
WHERE NationalIDNumber = 123456789
IF @@ROWCOUNT = 0
PRINT 'Warning: No rows were updated';
GO
SET Title = N'Executive'
WHERE NationalIDNumber = 123456789
IF @@ROWCOUNT = 0
PRINT 'Warning: No rows were updated';
以这个为例
UPDATE HumanResources.Employee
SET Title = N'Executive'
WHERE NationalIDNumber = 123456789
确认执行了,并且更改了数据库中的数据
当我执行IF @@ROWCOUNT = 0的时候,是否可以肯定@@RowCount的值
是执行了
UPDATE HumanResources.Employee
SET Title = N'Executive'
WHERE NationalIDNumber = 123456789
的结果?
而不是 select * from HumanResources.Employee 之类的其他Sql语句的结果
单机测试测不出来的,@@ROWCOUNT全局静态变量
针对
UPDATE HumanResources.Employee
SET Title = N'Executive'
WHERE NationalIDNumber = 123456789
IF @@ROWCOUNT = 0
PRINT 'Warning: No rows were updated';
以这个为例
UPDATE HumanResources.Employee
SET Title = N'Executive'
WHERE NationalIDNumber = 123456789
我的解决方案是
if(exists(select * from HumanResources.Employee where NationalIDNumber = 123456789))
begin
UPDATE HumanResources.Employee
SET Title = N'Executive'
WHERE NationalIDNumber = 123456789
end
else
begin
PRINT 'Warning: No rows were updated';
end