当前位置: 首页 > news >正文

sql Sever的存储过程转换为mysql的

总体来说,sql severMysql的存储过程的思路都是一样的,但是在语法和结构上还是有很大的区别的。
1. mysql中写存储过程所有的dbo都要去掉。
2每一个sql语句后面都需要加上;否则报错;
4. 再说参数,在MSSQL中我们一般会这么定义参数

CREATE PROCEDURE PROC_ST
(@operator varchar(300),
@ProcDate datetime,
@ErrorLog varchar(8000) OUTPUT)

但是在mysql中这种格式是不可以的;
首先在mysql中输入参数是in来表示,输出参数是out表示,如果不写,默认是in,其次在mysql中是没有@符号的,所以所有的@符号都要去掉
上述存储过程改写成mysql的话

 

create PROCEDURE PROC_ST
(
in operator varchar(300),
in ProcDate datetime, 
out ErrorLog varchar(8000) 
)

 

5.关于时间的问题
5.1 获取时间格式
MSSQL中我们来获取时间一般用CONVERT来表示,例如

set@YearMonth = CONVERT(varchar(6),@ProcDate,112);

 

这句话的意思就是获取时间的年月并且格式是yyyymm的,112代表的是一种格式;

但是在mysql中我修改的时候却一直报错,所以我换了一种写法

year(now())*100+month(now())

这样就可以了;
5.2
转换时间格式
同样的,在MSSQL中用CONVERT(varchar(6),参数,112) = @YearMonth 就可以使用,但是在MYSQL中我用的是cast强制转换才可以

CAST(
REP.FACT_DATE 
AS 
CHAR(6) )

 

6.

关于if的使用
MSSQL
If()
Begin
程序片段
End
Else
Begin
程序片段
End就可以;
但是在Mysql中是不认的,if的后面必须有then,而且每一个else if的后面必须有;作为结束符号,否则不管你怎么调试也是过不去的
下面的是我改写的一个函数,比较简单,主要是比较一下语法

CREATE FUNCTIONLOAN_PERIOD
(
begindate int,

enddate int
)
RETURNSvarchar(8000)
BEGIN

if(enddate-begindate <= '3')
then 

return '10';
end if;

if(enddate-begindate>'3' andenddate-begindate <= '6')
then 

return '20';

end if;

if(enddate-begindate>'6' andenddate-begindate <= '12') 

then 

return '30';

end if;

return '40';
END

7.关于在时间的增加或者减少
我们一般在MSSQL中想得到日期的上一个月一般会这么写

CONVERT (VARCHAR(6),DATEADD ("Month", -1, @ProcDate), 112)

 

DATEADD是MSSQL的内置函数;

但是在mysql中是没有这个函数的,那我们应该怎么办呢,别着急,在mysql中有DATE_SUB函数,基本上也能满足我们的需求,上面这句话改写完成后

CAST(DATE_SUB(ProcDate,INTERVAL1 MONTH) AS CHAR(6))

 

8.关于表变量

MYsql中时不存在表变量这个概念的,但是却可以用临时表来代替,在Mysql中我们创业临时表一般用
CREATEtemporary
table tempTotal 
来进行创建,还有一点好处,就是临时变量在存储过程执行完会自动释放,不会占用大量内存;
9.MSSQL中会常常用到下面这个声明
DECLARE@temp
VARCHAR (MAX);

但是在mysql中没有max这个概念,我一般会用varcahr8000)来替代,网上众说纷纭,说varchar最大值多少的都有,我没试验过,改写的时候慎用。
10.MSSQL中金融产品化会常常用到下面这个声明
DECLARE@temp
VARCHAR (MAX);

但是在mysql中没有max这个概念,我一般会用varcahr8000)来替代,网上众说纷纭,说varchar最大值多少的都有,我没试验过,改写的时候慎用。
11. mysql中没有isnull函数,所以我们用ifnull来代替,用法一样;
以上就是我改写的过程中碰到的一些问题,希望对大家能有所帮助吧!

转载于:https://www.cnblogs.com/huxiaolin/p/4671039.html

相关文章:

  • 7月21日13家中国域名商(国际域名)解析量报告
  • NoSQL精粹读书笔记-第1章
  • iOS开发-App Icons的尺寸大小
  • js 时间戳转为日期格式
  • 540C: Ice Cave
  • JavaScript判断IE版本
  • EditPlus自动补全、模板配置
  • 引子——从Mac OS X的Lion说起
  • 悠然乱弹:“最好的模板引擎”Beetl 剖析及与Tiny模板引擎对比
  • c# 反射类字段
  • Oracle 学习之RMAN(十四)恢复实战--基于时间点恢复
  • HAProxy+Keepalived实现Web服务器负载均衡
  • Java删除ArrayList中的重复元素的2种方法
  • 【LeetCode】66 67- Plus One Add Binary
  • 使用CodeIgniter框架搭建RESTful API服务
  • 自己简单写的 事件订阅机制
  • C语言笔记(第一章:C语言编程)
  • es的写入过程
  • Java方法详解
  • js正则,这点儿就够用了
  • Laravel Mix运行时关于es2015报错解决方案
  • opencv python Meanshift 和 Camshift
  • Python十分钟制作属于你自己的个性logo
  • vue-router的history模式发布配置
  • vue从创建到完整的饿了么(11)组件的使用(svg图标及watch的简单使用)
  • Webpack 4x 之路 ( 四 )
  • windows-nginx-https-本地配置
  • zookeeper系列(七)实战分布式命名服务
  • 关于Android中设置闹钟的相对比较完善的解决方案
  • 理解在java “”i=i++;”所发生的事情
  • 山寨一个 Promise
  • 一份游戏开发学习路线
  • 源码之下无秘密 ── 做最好的 Netty 源码分析教程
  • NLPIR智能语义技术让大数据挖掘更简单
  • #LLM入门|Prompt#3.3_存储_Memory
  • #数学建模# 线性规划问题的Matlab求解
  • (10)ATF MMU转换表
  • (Matalb回归预测)PSO-BP粒子群算法优化BP神经网络的多维回归预测
  • (react踩过的坑)Antd Select(设置了labelInValue)在FormItem中initialValue的问题
  • (windows2012共享文件夹和防火墙设置
  • (ZT)出版业改革:该死的死,该生的生
  • (独孤九剑)--文件系统
  • (论文阅读26/100)Weakly-supervised learning with convolutional neural networks
  • (四)汇编语言——简单程序
  • (淘宝无限适配)手机端rem布局详解(转载非原创)
  • (转)LINQ之路
  • (轉)JSON.stringify 语法实例讲解
  • (轉貼) VS2005 快捷键 (初級) (.NET) (Visual Studio)
  • .bat批处理(四):路径相关%cd%和%~dp0的区别
  • .NET Core使用NPOI导出复杂,美观的Excel详解
  • .Net 高效开发之不可错过的实用工具
  • .NET中使用Protobuffer 实现序列化和反序列化
  • /bin、/sbin、/usr/bin、/usr/sbin
  • /var/spool/postfix/maildrop 下有大量文件
  • @JSONField或@JsonProperty注解使用