Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何通过存储过程返回更新的和以前的值?_Sql_Database_Stored Procedures_Sql Update_Distributed Database - Fatal编程技术网

Sql 如何通过存储过程返回更新的和以前的值?

Sql 如何通过存储过程返回更新的和以前的值?,sql,database,stored-procedures,sql-update,distributed-database,Sql,Database,Stored Procedures,Sql Update,Distributed Database,关于任务所需的帮助: 编写一个存储过程,将EID和CITY作为参数,并更新给定EID员工的CITY。更新城市后,您必须显示员工的旧城市和新城市以及他/她的姓名。我尝试了以下操作,已成功执行了一半 `创建进程latest@eidint,@city varchar10 作为 开始 结束 exec最新版本12“rawalpindi”`在更新原始值之前存储原始值。比如: declare @previouscity varchar(10) set @previouscity = (select city

关于任务所需的帮助: 编写一个存储过程,将EID和CITY作为参数,并更新给定EID员工的CITY。更新城市后,您必须显示员工的旧城市和新城市以及他/她的姓名。我尝试了以下操作,已成功执行了一半

`创建进程latest@eidint,@city varchar10

作为

开始

结束


exec最新版本12“rawalpindi”`

在更新原始值之前存储原始值。比如:

declare @previouscity varchar(10)
set @previouscity = (select city from employee where eid=@eid)
然后进行更新,最后一件事是这样的:

select name + ' changed city from ' + @previouscity + ' to ' + city
from employee
where eid=@eid
所有未测试的

都使用update语句的子句

update employee
set    city = @city
output ...
where  eid = @eid

我不会为您编写确切的输出语句。做作业!:

我将如何访问表witrout LAG或Lead FUNCTION LAG和Lead中的上一个最新值用于根据某列排序的行的相对位置查找当前数据中的行。所以,如果我有一个列,其中有数字1、2和3,我可以通过取行的滞后值2得到值1。您想要的不是表中的前一个位置。在现实世界中,你需要时间。在我更新之前,这个表中有什么?output子句可以为您提供这一点。如果您单击我的邮件中的链接,它将带您访问有关如何使用它的文档。网上也有一些很好的教程。
update employee
set    city = @city
output ...
where  eid = @eid