SQL Server 输出受影响的行

前期准备:

  create table Nums(X int);

  create table T(X int);

  go

  目的:把对表Nums的insert | delete | update 反映到T表中。

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

insert :

  insert into Nums(X)

  output inserted.X #记得它在列表之后

  into T(X)

  values(1),(2),(3);

deleted:

  delete Nums

  output deleted.X#它在表名之后
  into T(X);
  go

update:

  update Nums
  set X = 100
  output inserted.X#它在set 之后
  into T(X);
  go

时间: 10-22

SQL Server 输出受影响的行的相关文章

SQL Server返回插入数据的ID和受影响的行数

首先看看数据库里面的数据(S_Id为自增长标识列): sql server 中返回上一次插入数据的ID(标识值)有三种方式: 第一种 @@IDENTITY: 1 insert into Student(S_StuNo,S_Name,S_Sex,S_Height) 2 values('013','卫庄','男','185'); 3 4 select @@IDENTITY -- 返回 17 @@IDENTITY可以返回当前连接所有范围内插入最后所生成的标识值(包括任何调用的存储过程和触发器).这个函

SQLCommand.ExecutenonQuery受影响的行数为什么会是-1?

一般我们在执行SQL语句的时候会调用ExecuteNonQuery();然后用一个声明一个int值接受这个受影响的行数,通过判断这个int值,我们可以得知这条SQL语句是否已经执行.通常我们判断就是这个int值大于0,因为我们知道,最起码受影响的行数是1,我们判断大于0就OK了,但是在运行时我们发现我们判断的语句的值为false,为什么呢?最后查了一下MSDN文档,看完解释就明白了. 对于 UPDATE.INSERT 和 DELETE 语句,返回值为该命令所影响的行数.对于所有其他类型的语句,返

sql server 输出参数

id hebei shandong type riqi 1 140 120 1 2014-04-13 2 130 120 2 2014-04-13 表A中的数据如上图所示,现在我要处理的一种情况是这样子的,我需要写一个存储过程,代码中会传两个参数shandong,type 的值1 给接收参数@region ,@type,那么我会获得值120,获得之后在原有的数值上加1 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 DECLARE @region varchar

(转)SQL Server 2008怎样编辑200行以上的数据

刚换SQL Server2008 不久,感觉运行速度.编辑提示都比05版的提升不少,但是在维护考试系统中遇到一个05中没有的问题:05中有“打开表”可以编辑所有数据行,到了08变成了“打开前1000行”和“编辑前200行”:考试系统中的数据怎么也有几千行,怎么编辑以后的数据?                       方法一:修改设置         进入"工具"---选项---SQL Server对象资源管理器---命令---“编辑前<n>行”,值改为1000(自定).

Oracle sql%rowcount 返回影响行数;sql server @@RowCount返回影响行数

sql server中,返回影响行数是:If @@RowCount<1 Oracle中,返回影响行数是:If sql%rowcount<1 例: sqlserver: create procedure Proc_test @Stat int=0, @MsgId varchar(50)='', AS BEGIN Update T_Mt Set Stat=@Stat,OStat=@Stat,RptTime=Getdate() Where MsgId=@MsgId If @@RowCount<

为什么SQL语句Where 1=1 and在SQL Server中不影响性能

    最近一个朋友和我探讨关于Where 1=1 and这种形式的语句会不会影响性能.最后结论是不影响.     虽然结论正确,但对问题的认识却远远没有解决问题的根本.实际上在T-SQL语句的书写过程中经常犯得错误就是得出一个很窄的结论,然后教条式的奉若圣经,对于T-SQL领域来说,在网上经常可以看到所谓的优化守则,随便在网上搜了一些摘录如下: 不要有超过5个以上的表连接(JOIN) 考虑使用临时表或表变量存放中间结果 少用子查询 视图嵌套不要过深,一般视图嵌套不要超过2个为宜. 对出现在wh

SQL Server遍历所有表统计行数

DECLARE CountTableRecords CURSOR READ_ONLY FOR SELECT sst.name, Schema_name(sst.schema_id) FROM sys.tables sst WHERE sst.TYPE = 'U' DECLARE @name VARCHAR(80), @schema VARCHAR(40) OPEN CountTableRecords FETCH NEXT FROM CountTableRecords INTO @name, @s

oracle,sql server count函数 存储过程 判断 行数 注意事项

oralce中使用 count 函数判断 行数 需要注意 一定是count 有值的字段,接下来看一组语句 1 --查询数据 2 select * from kk_create_ka where auto_id='D7313B4716AD4062B82D3CD8513DA7A8'; 1 --count 2 select count(I_E_Flag) from kk_create_ka where auto_id='D7313B4716AD4062B82D3CD8513DA7A8'; 3 sele

SQL Server 输出消息

如果使用脚本执行SQL时可能执行时间较长,无法查看执行的进度,及时使用Print输出信息,也会等待执行完成之后一块输出. 可以使用 RAISERROR( 'This message will show up right away...',0,1) WITH NOWAIT 这样可以及时的输出信息. 原文地址:https://www.cnblogs.com/andy-2014/p/11452347.html