sql Sever的存储过程转换为mysql的
总体来说,sql sever和Mysql的存储过程的思路都是一样的,但是在语法和结构上还是有很大的区别的。
1. 在mysql中写存储过程所有的dbo都要去掉。
2. 每一个sql语句后面都需要加上;否则报错;
4. 再说参数,在MSSQL中我们一般会这么定义参数
1
2
3
4
|
CREATE PROCEDURE PROC_ST
(@operator varchar (300),
@ProcDate datetime,
@ErrorLog varchar (8000) OUTPUT )
|
但是在mysql中这种格式是不可以的;
首先在mysql中输入参数是in来表示,输出参数是out表示,如果不写,默认是in,其次在mysql中是没有@符号的,所以所有的@符号都要去掉
上述存储过程改写成mysql的话
1
2
3
4
5
6
|
create PROCEDURE PROC_ST
(
in operator varchar (300),
in ProcDate datetime,
out ErrorLog varchar (8000)
)
|
5.关于时间的问题
5.1 获取时间格式
在MSSQL中我们来获取时间一般用CONVERT来表示,例如
1
|
set @YearMonth = CONVERT ( varchar (6),@ProcDate,112);
|
这句话的意思就是获取时间的年月并且格式是yyyymm的,112代表的是一种格式;
但是在mysql中我修改的时候却一直报错,所以我换了一种写法
1
|
year (now())*100+ month (now())
|
这样就可以了;
5.2
转换时间格式
同样的,在MSSQL中用CONVERT(varchar(6),参数,112) = @YearMonth 就可以使用,但是在MYSQL中我用的是cast强制转换才可以
1
2
3
4
|
CAST (
REP.FACT_DATE
AS
CHAR (6) )
|
6.
关于if的使用
在MSSQL中用
If()
Begin
程序片段
End
Else
Begin
程序片段
End就可以;
但是在Mysql中是不认的,if的后面必须有then,而且每一个else if的后面必须有;作为结束符号,否则不管你怎么调试也是过不去的
下面的是我改写的一个函数,比较简单,主要是比较一下语法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
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中想得到日期的上一个月一般会这么写
1
|
CONVERT ( VARCHAR (6),DATEADD ( "Month" , -1, @ProcDate), 112)
|
DATEADD是MSSQL的内置函数;
但是在mysql中是没有这个函数的,那我们应该怎么办呢,别着急,在mysql中有DATE_SUB函数,基本上也能满足我们的需求,上面这句话改写完成后
1
|
CAST (DATE_SUB(ProcDate,INTERVAL1 MONTH ) AS CHAR (6))
|
8.关于表变量
在MYsql中时不存在表变量这个概念的,但是却可以用临时表来代替,在Mysql中我们创业临时表一般用
CREATEtemporary
table tempTotal 来进行创建,还有一点好处,就是临时变量在存储过程执行完会自动释放,不会占用大量内存;
9.在MSSQL中会常常用到下面这个声明
DECLARE@temp
VARCHAR (MAX);
但是在mysql中没有max这个概念,我一般会用varcahr(8000)来替代,网上众说纷纭,说varchar最大值多少的都有,我没试验过,改写的时候慎用。
10.在MSSQL中金融产品化会常常用到下面这个声明
DECLARE@temp
VARCHAR (MAX);
但是在mysql中没有max这个概念,我一般会用varcahr(8000)来替代,网上众说纷纭,说varchar最大值多少的都有,我没试验过,改写的时候慎用。
11. 在mysql中没有isnull函数,所以我们用ifnull来代替,用法一样;
以上就是我改写的过程中碰到的一些问题,希望对大家能有所帮助吧!
sql Sever的存储过程转换为mysql的相关推荐
- SQL Sever数据库存储过程
一.背景介绍 1.遇到存储过程 回顾之前知识,使用在当下(毕业设计) 2.了解周边知识 二.思路&方案 1.了解存储过程定义.语法.种类 2.存储过程有什么优缺点 3.存储过程与触发器和函数的 ...
- sql server转mysql工具下载_SQL Server转换为MySQL工具推荐(Mss2sql)
SQL Server转换为MySQL工具,用了一下 感觉蛮不错的. 分享上来,同时也以便记录下来以后自用. 工具名称:Mss2sql 来个操作流程: 1.首先下载工具 用户名与密码都是www.linu ...
- SQL存储过程(MySQL)
存储过程的原理 一般编写SQL语句时会遇到 多张表添加数据 的情况,如果将主表添加信息的主键作为外联的联系,如ID列,在MySQL中是自动生成的,则无法定义两次select来进行添加. 但是,SQL语 ...
- kettle的连接与使用——从SQL sever中抽取数据至MYSQL
示例:将SQL sever中test库的student表中的数据抽取至MySQL 如下:MYSQL中student表无数据,且需要获取数据的字段分别为sno.sname.sex.class(我们要将S ...
- mysql workbench导入mdb_如何将MDB(Access)文件转换为MySQL(或纯SQL文件)?
你想转换mdb到mysql(直接传输到mysql或mysql转储)? 尝试一个名为访问MySQL的软件. 访问MySQL是一个小程序,将Microsoft Access数据库转换为MySQL. 向导界 ...
- qt调用mysql调用了存储过_Qt调用Server SQL中的存储过程
Server SQL中的存储过程如下: CREATE procedure PINSERTPC @pcnum int, @pcname varchar(50), @pctype int, @ipaddr ...
- sql server 转换为mysql_SqlServer转换为Mysql
昨天顺利把MySQL成功安装后,正准备着手把原来项目中的SQL SERVER数据库改为MYSQL数据库,可大量的表结构和表数据如要手动写,那就...... 接下来就是各种百度.谷歌.问先驱等,可得到的 ...
- SQL Server 迁移数据到MySQL
一.背景 由于项目开始时候使用的数据库是SQL Server,后来把存储的数据库调整为MySQL,所以需要把SQL Server的数据转移到MySQL:由于涉及的表比较多,所以想在MySQL中生成对应 ...
- [翻译]使用C#创建SQL Server的存储过程(Visual Studio 2005 + SQL Server 2005)
原文地址:http://www.dotnetbips.com/articles/70eff218-3da0-4f6f-8f8d-eeea65193f2c.aspx[原文×××] [翻译]使用C#创建S ...
- Entity Framework Core 执行SQL语句和存储过程
无论ORM有多么强大,总会出现一些特殊的情况,它无法满足我们的要求.在这篇文章中,我们介绍几种执行SQL的方法. 表结构 在具体内容开始之前,我们先简单说明一下要使用的表结构. public clas ...
最新文章
- Button的使用(十三):设置可见性
- 俄罗斯方块新增行算法:不拘一格编程序之二
- 看图识物_看图识物:下面图里是什么植物呢?请朋友们评论区留言
- Windows10系统Python2.7通过Swig调用C++过程
- P1081-开车旅行【倍增,链表,dp】
- 专题导读:新基建环境下的数据资产价值评估与定价
- MS CRM如果在Tab页中有Iframe选项,原来速度不慢,突然速度变慢
- win10 wsl和wsl2使用总结
- [转载]ASPNET MVC表格呈现利器:MvcContrib.UI.Grid
- indesign教程,了解基本文本格式
- 计算机中丢失xvidcore.dll,找不到xvidcore.dll怎么办?
- c语言自动安装软件,VC++(c语言程序下载安装)
- 听完吴声的演讲,我感觉智商梗阻了
- E路航LH950N更换电池全程图解
- 关于把Excel转换成word的经验
- c语言使用openssl库进行RSA加解密,并使用OAEP SHA256填充方式
- 用计算机制作动画,什么是计算机动画制作
- python写微信小程序源码示例_python实现微信小程序用户登录、模板推送
- 机器学习/算法工程师(含大量面经) --1
- 基础集合论 第一章 集合与集合的运算