Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.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_Stored Procedures_Plsql_Cursor - Fatal编程技术网

Sql 创建存储过程以比较日期列和更新状态列

Sql 创建存储过程以比较日期列和更新状态列,sql,stored-procedures,plsql,cursor,Sql,Stored Procedures,Plsql,Cursor,我需要创建一个存储过程,用于比较EXPIRYDATE列与SYSTEMDATE列,如果它们匹配相等,则必须使用值1更新另一个名为MATCHSTATUS的列,如果它们不匹配,则必须使用值0更新 EXPIRYDATE和MATCHSTATUS都存在于同一个表中 例如: username password expirydate matchstatus ----------------------------------------------------- abc 987

我需要创建一个存储过程,用于比较
EXPIRYDATE
列与
SYSTEMDATE
列,如果它们匹配相等,则必须使用值1更新另一个名为
MATCHSTATUS
的列,如果它们不匹配,则必须使用值0更新

EXPIRYDATE
MATCHSTATUS
都存在于同一个表中

例如:

username   password   expirydate   matchstatus
-----------------------------------------------------
abc        987        01-Feb-2015       1
xyz        678        10-Feb-2015       0
ghi        456        15-Jan-2015       0

在本例中,应该通过比较expirydate列和sysdate来更新match status列,并且应该通过存储过程来完成

Declare @crntdt NVARCHAR(20)
Declare @mydt NVARCHAR(20)

Select 
@crntdt = REPLACE(rtrim(ltrim(CONVERT(CHAR(15), getdate(), 106))),' ',' - ') 
--select @crntdt
select @mydt=expirydate from your_table

if @crntdt=@mydt
begin
update your_table set matchstatus=1 where expirydate=@mydt
end

我认为这就是您所需要的-这假设expirtydate是一个日期,如果它是varchar,则需要将其转换为日期:

CREATE PROCEDURE sp_name
as
Begin
Update tbl
set matchstatus = case when expirydate = cast(GETDATE() as date) then 1 else 0 end
END

为什么需要存储过程?那么问题出在哪里?您实际上还没有问过问题,需要查询帮助吗?在如何创建存储过程方面需要帮助吗?您想知道存储过程是否是正确使用的方法吗?你只是在聊天吗?