SQL执行并返回执行前/后结果

1、插入数据,并返回插入的数据:

INSERT INTO TestTB(Province,City) output inserted.Province, inserted.City VALUES(‘广东‘,‘深圳‘)

2、同理,删除数据也是一样的,只不过是使用deleted表罢了。

delete from TestTB output deleted.* where id=1

3、两个结合一起:返回更新前和更新后的数据:

UPDATE TestTB SET Province = ‘湖南‘,City=‘郴州‘ OUTPUT ‘我来自(更新前)‘+ DELETED.Province+DELETED.City as [Before] ,‘我来自(更新后)‘ + Inserted.Province+Inserted.City as [After] WHERE id=1

4、还可以将返回的结果保存在表变量中,这在删除数据,并把删除的数据插入到历史表时很实用

DECLARE @temp TableTABLE(    idint,    Provincevarchar(50),    Cityvarchar(50) )DELETEFROMTestTB OUTPUT deleted.*[email protected]>4SELECT*[email protected]

-- 返回更新前的值

UPDATE ppdai_jr_shop.dbo.GeneratorUniqueNo SET suffix=suffix+2  OUTPUT Inserted.suffix WHERE prefix=‘PPDTK‘

-- 返回更新后的值

UPDATE ppdai_jr_shop.dbo.GeneratorUniqueNo SET suffix=suffix+2  OUTPUT DELETED.suffix WHERE prefix=‘PPDTK‘

时间: 2024-11-05 12:14:16

SQL执行并返回执行前/后结果的相关文章

SQL Server中执行Sql字符串,返回执行结果

今天遇到一个问题:想把sql字符串在SQL Server 中执行了,并获取执行的结果 DECLARE @tablename NVARCHAR(300); SET @tablename='select @table3 = count(1) from UserVisitLog'; DECLARE @newtablename NVARCHAR(300); exec sp_executesql @tablename, N'@table3 NVARCHAR(300) OUT',@newtablename

cmd执行命令返回执行信息

/// <summary> /// 执行CMD语句 /// </summary> /// <param name="cmd">要执行的CMD命令</param> public string RunCmd(string cmd) { proc.StartInfo.CreateNoWindow = true; proc.StartInfo.FileName = "cmd.exe"; proc.StartInfo.UseSh

ORA-01843: 无效的月份,执行sql语句更改为美国语言后仍然失败的解决办法

ORA-01843: 无效的月份失败的 sql 为:XXXXXXXXXXXXXXXX 执行sql语句更改为美国语言后仍然失败, ALTER SESSION SET NLS_DATE_LANGUAGE='AMERICAN'; 结果是注册表的问题,优化后多余的语言被清理掉了,所以,要修复注册表 将下面的文件复制保存为注册表文件.reg双击导入注册表. windows server 2005 系统时区文件 Time Zones.reg的文件内容,适用于windows server 2008 r2 我是

MS SQL Server 如何得到执行最耗时的前N条T-SQL语句-

--得到最耗时的前N条T-SQL语句 --适用于SQL SERVER 2005及其以上版本 --给N赋初值为30 declare @n int set @n=30 ;with maco as ( select top (@n) plan_handle, sum(total_worker_time) as total_worker_time , sum(execution_count) as execution_count , count(1) as sql_count from sys.dm_e

SQL语句的执行顺序--知道执行顺序,顺便可以做优化了,对吧

今天,被面试问到了一个问题,SQL的执行顺序,当时想的是,SQL有啥执行顺序,从上往下?当时瞎胡邹,说先执行from,为啥,不执行from怎么知道操作查询的是什么表,对吧,哎嘿,还蒙对了.下来之后总结了一下 (一)先讲讲查询吧 查询语句中select from where group by having order by的执行顺序 1.查询中用到的关键词主要包含六个,并且他们的顺序依次为 select--from--where--group by--having--order by 其中sele

【SQL进阶】03.执行计划之旅1 - 初探

听到大牛们说执行计划,总是很惶恐,是对知识的缺乏的惶恐,所以必须得学习执行计划,以减少对这一块知识的惶恐,下面是对执行计划的第一讲-理解执行计划. 本系列[T-SQL]主要是针对T-SQL的总结. SQL基础 [T-SQL基础]01.单表查询-几道sql查询题 [T-SQL基础]02.联接查询 [T-SQL基础]03.子查询 [T-SQL基础]04.表表达式-上篇 [T-SQL基础]04.表表达式-下篇 [T-SQL基础]05.集合运算 [T-SQL基础]06.透视.逆透视.分组集 [T-SQL

sql关键字的解释执行顺序

sql关键字的解释执行顺序 分类: 笔试面试总结2013-03-17 14:49 1622人阅读 评论(1) 收藏 举报 SQL关键字顺序 表里面的字段名什么符号都不加,值的话一律加上单引号 有一次笔试考到了关于SQL关键字执行顺序的知识点. 我们做软件开发的,大部分人都离不开跟数据库打交道,特别是erp开发的,跟数据库打交道更是频繁,存储过程动不动就是上千行,如果数据量大,人员流动大,那么我么还能保证下一段时间系统还能流畅的运行吗?我么还能保证下一个人能看懂我么的存储过程吗?那么我结合公司平时

浅谈SQL优化入门:1、SQL查询语句的执行顺序

1.SQL查询语句的执行顺序 (7) SELECT (8) DISTINCT <select_list> (1) FROM <left_table> (3) <join_type> JOIN <right_table> (2) ON <join_condition> (4) WHERE <where_condition> (5) GROUP BY <group_by_list> (6) HAVING <having_

如何得到AdoConnection.execute(sqlstr)执行的返回结果

如何得到AdoConnection.execute(sqlstr)执行的返回结果? 1: TAdoConnection.execute有procedure.function的两种定义,function返回_RecordSet类型.可以这样调用: rec:_Recordset; n:integer; rec:=conn.Execute(sqlStr); if (assigned(rec)) and (not rec.eof) n:=rec.Fields[0].Value; ...... IstVa