问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

PostgreSQL存储过程转换SQLServer的

发布网友 发布时间:2022-04-23 16:13

我来回答

1个回答

热心网友 时间:2022-05-02 03:35

因sql server2000中不允许调用当前时间的函数getdate(),也不允许非表变量之外的update、insert、delete操作,故这里修改为存储过程,其中原来的return值改用输出参数"@Result int output"来实现,具体如下:

CREATE PROCEDURE web_login(@web_username varchar(50), @web_pwd varchar(50), @web_ip varchar(50),@Result int output)
AS
BEGIN
declare
@len int, -- -2 fail -3 lockip
@u_locktime varchar(10),
@u_cleartime varchar(50),
@u_count int,
@user_id int,
@log_id int,
@cal int

set @len=0

select @u_count=config_value from as_all_config where config_item='U_AllowCount'
select @u_cleartime=config_value from as_all_config where config_item='U_LimitDay'
set @cal=@u_cleartime
select @u_locktime=config_value from as_all_config where config_item='U_Locktime'
--判断用户是否已经锁定
select top 1 @len=serialno from web_user_log where login_id =@web_username and last_ip=@web_ip and last_lock_time<getdate() and last_count= @u_count
if @len>0
begin
insert into as_log(log_fromtype, log_type,log_text, log_level) values(8,4,'用户 '+@web_username+'登录失败 ip锁定',1)
set @Result=-3
RETURN
end
--判断用户失败次数
select top 1 @len=last_count,@log_id=serialno from web_user_log where login_id =@web_username and last_ip=@web_ip and convert(varchar(10),last_fail_time,120)=convert(varchar(10),getdate(),120) order by last_fail_time desc
if @len>3
begin
update web_user_log set last_lock_time=getdate() where serialno=@log_id
insert into as_log(log_fromtype, log_type,log_text, log_level) values(8,4,'用户 '+@web_username+'登录失败 ip锁定',1)
set @Result=-3
RETURN
end
--正常操作
select top 1 @len=last_count, @log_id=serialno from web_user_log where login_id =@web_username and last_ip=@web_ip and convert(varchar(10),last_fail_time,120)=convert(varchar(10),getdate(),120) order by last_fail_time desc
select top 1 @user_id=serialno from web_user where login_id = @web_username and login_pwd=@web_pwd
delete from web_user_log where login_id =@web_username and last_lock_time<=convert(varchar(10),dateadd(day,-@cal,getdate()),120)
if @user_id>0
begin
insert into as_log( log_fromtype, log_type, log_text, log_level) values(8,4,'用户 '+@web_username+'登录成功',1)
set @Result=@user_id
RETURN
end
else if (@len is null or @len=0)
insert into web_user_log(last_count, last_ip, login_pwd, login_id) values(1,@web_ip,@web_pwd,@web_username)
else
update web_user_log set last_count=last_count+1 where serialno=@log_id

insert into as_log(log_fromtype, log_type, log_text, log_level)values(8,4,'用户 '+@web_username+'登录失败',1)
set @Result=-2
RETURN
END
go

--更改当前数据库中对象的所有者:
sp_changeobjectowner 'web_login','ema_user'
go
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
汽车胎扎了个钉子是拔还是不拔? 台式机电源什么牌子好 台式机电源有哪些牌子 金牌 银牌 铜牌电源哪个好 台式机电源等级性能解析 电脑电源推荐-全汉(FSP) 500W银牌(88%)全模组SFX电源 我的妻子背叛了我,我该怎么办, 初一语文复习材料(急急急!!!) 绿色蝈蝈课后题答案七上语文 女人梦见黄鼠狼的七大预兆 怎么知道注塑机螺杆有无卡死现象? 请问为什么在钢之炼金术师fa里,爱德华一开始不用炼金术换 timelock加密的文件如何解出来 如何解决SQL Server查询速度缓慢的问题 ipad上timelock怎么用 如何设定 sybase 的 lock time out DB2的lock timeout值是在哪儿设置的 怎么用Hql语句取今天的数据,是00.00.00-23.59.59之间的。 Oracle中Password_lock_time设置为 UNLIMITED 是不是不会自动解锁_百度... Time can&#39;t lock time 是什么意思 锁住时间英文怎么说? locktime是什么意思 还钱时没有约定是归还本金、还是归还利息,该怎么认定 没有约定保证期间怎么处理 合同没有约定 合同没有约定履行时间怎么办 “没有约定 没有诺言 没有时间 ”谁哪首歌的歌词 合同中没有约定违约金的怎么处理呢 合同没有约定地点怎么办? 何车无轮;何猪无嘴;何驴无毛;何屋无门;何书无字;何花无果?? 合同中没有约定履行期限怎么办 汉初三大名将分别都是谁,他们最后的结局如何? 草莓酱不放柠檬可以吗 做果酱为什么要加柠檬汁 请UNIX高手看看,UNIX服务器究竟是何问题? 系统运行一段时间为何自动重启? 银行卡丢失,补办需要多长时间? 做草莓酱没有柠檬可以用橙汁代替吗? 为什么我的电脑按caps lock键会弹出游戏?就是会切换到别的页面 为什么我的笔记本 有的时候一按大写键电脑就自动锁定了 不用柠檬的做法草莓酱? 农村商业银行卡丢失了补办一张需要多久? 最近发现我一按大小写锁定键 就会弹到桌面上!头疼死了!!! 我的笔记本为什么切换大小写的时候都会切出操作界面啊? 草莓酱不放柠檬可以吗 做果酱为什么要加 为什么我的电脑DELL的大小写切换时总是跳动,除了禁用quickset之外还有什么办法? 自制草莓酱为什么要放柠檬?不放可以吗? 戴尔屏幕右下角“大写锁定”问题 做果酱不放柠檬汁行吗 win7任务栏任何消息不闪烁 草莓酱的做法? 银行卡丢了,补一张卡多长时间? 银行卡丢失补办需要多久 幸福滋味~手工草莓酱的家常做法?