免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3887 | 回复: 3

PostgreSQL存储过程转换SQLServer的 [复制链接]

论坛徽章:
0
发表于 2011-12-22 19:17 |显示全部楼层
20可用积分
CREATE OR REPLACE FUNCTION web_login(web_username character varying, web_pwd character varying, web_ip character varying)
  RETURNS integer AS
$BODY$
declare
   len Integer:=0; -- -2 fail -3 lockip
   u_locktime character varying(10);
   u_cleartime character varying(50);
   u_count Integer;
   user_id Integer;
   log_id Integer;
   cal interval;
BEGIN
     select config_value into u_count from as_all_config where  config_item='U_AllowCount' ;     
     select config_value into u_cleartime from as_all_config where  config_item='U_LimitDay' ;
     cal:=(u_cleartime||' days') as inverval;
     select config_value into u_locktime from as_all_config where  config_item='U_Locktime' ;
     --判断用户是否已经锁定
     select serialno into len from web_user_log  where login_id =web_username and last_ip=web_ip and last_lock_time<now() and last_count= u_count limit 1;
     if len>0 then
insert into as_log(log_fromtype, log_type,log_text, log_level)values(8,4,'用户 '||web_username||'登录失败 ip锁定',1);
RETURN -3;
     end if;
     --判断用户失败次数
     select last_count,serialno into len,log_id from web_user_log  where login_id =web_username and last_ip=web_ip and date_trunc('day',last_fail_time)=date_trunc('day',now()) order by last_fail_time  desc  limit 1;
     if len>3 then
        update web_user_log set last_lock_time=now() where serialno=log_id;
insert into as_log(log_fromtype, log_type,log_text, log_level)values(8,4,'用户 '||web_username||'登录失败 ip锁定',1);
RETURN -3;
     end if;
     --正常操作
     select last_count, serialno into len ,log_id from web_user_log where login_id =web_username  and last_ip=web_ip and  date_trunc('day',last_fail_time)=date_trunc('day',now())  order by last_fail_time desc limit 1 ;
     select serialno into user_id from web_user where login_id = web_username and login_pwd=web_pwd  limit 1;
     delete from  web_user_log where login_id =web_username and  last_lock_time<=date_trunc('day',((now()-justify_days(cal))));
     if user_id>0 then
insert into as_log( log_fromtype, log_type, log_text, log_level)values(8,4,'用户 '||web_username||'登录成功',1);
RETURN user_id;
     elsif len is null or len=0  then
    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;
     end if;
       insert into as_log(log_fromtype, log_type, log_text, log_level)values(8,4,'用户 '||web_username||'登录失败',1);
       RETURN -2;
END;
$BODY$
  LANGUAGE 'plpgsql' VOLATILE
  COST 100;
ALTER FUNCTION web_login(character varying, character varying, character varying) OWNER TO ema_user;



这段 改成SqlServer2000版本的

论坛徽章:
59
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
发表于 2011-12-22 21:36 |显示全部楼层
你可以直接参考SQLSERVER的存储过程来改啊。楼主是过来混帖子的吗?

论坛徽章:
0
发表于 2012-01-30 11:04 |显示全部楼层
看清楚思路。重写。

论坛徽章:
0
发表于 2012-03-06 14:03 |显示全部楼层
当年做过类似的事情,从oracle移到PG上

有几点要注意的把
1.语句的格式,有些语句如limit之类格式可能不同
2.两个库的函数可能不一致,有些需要自己写

论坛徽章:
0
发表于 2012-03-07 18:18 |显示全部楼层
楼上的兄弟也做过oracle数据到pg的移植啊?佩服。。我正在做,还没头绪呢。。
我的方案是在要移植到的pg的linux系统上装个oracle的客户端,然后用python写个脚本转化数据格式,python有连接oracle的模块,不知道能不能行。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP