总体来说,sql sever和Mysql的存储过程的思路都是一样的,但是在语法和结构上还是有很大的区别的。
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这个概念,我一般会用varcahr(8000)来替代,网上众说纷纭,说varchar最大值多少的都有,我没试验过,改写的时候慎用。
10.在MSSQL中金融产品化会常常用到下面这个声明
DECLARE@temp
VARCHAR (MAX);
但是在mysql中没有max这个概念,我一般会用varcahr(8000)来替代,网上众说纷纭,说varchar最大值多少的都有,我没试验过,改写的时候慎用。
11. 在mysql中没有isnull函数,所以我们用ifnull来代替,用法一样;
以上就是我改写的过程中碰到的一些问题,希望对大家能有所帮助吧!

sql Sever的存储过程转换为mysql的的更多相关文章

  1. SQL Server数据库(SQL Sever语言 存储过程及触发器)

    存储过程:就像函数一样的会保存在数据库中-->可编程性-->存储过程 创建存储过程: 保存在数据库表,可编程性,存储过程create proc jiafa --需要的参数@a int,@b ...

  2. SQL Sever语言 存储过程及触发器

    存储过程:就像函数一样的会保存在数据库中-->可编程性-->存储过程 创建存储过程: 保存在数据库表,可编程性,存储过程create proc jiafa --需要的参数@a int,@b ...

  3. 数据库操作----找了MySQL和SQL Sever两个的基础语句

    这是MySQL的基本操作: 1 登入数据库:mysql -uroot -p+密码 (SQL Sever登入: osql -U 用户名 -P 密码) 显示已存在的数据库:show databases; ...

  4. VB.NET调用SQL Sever存储过程

    概要: 本文介绍VB.NET使用创建并调用带有输入参数和输出参数的SQL Sever存储过程 本文代码首先检查要创建的存储过程再数据库中是否存在在.如果不存在,则代码创建一个存储过程,该过程一个参数来 ...

  5. sql sever和mysql 卸载及oracle安装

    sql sever和mysql的卸载及Oracle安装 目的:本人健忘,以后难免会重装系统啥的,软件卸了装是常有的事,特此写此详细教程,一是方便自己以后重装的时候可以看看:二是如果有某位初学者有幸光临 ...

  6. SQL学习笔记七之MySQL视图、触发器、事务、存储过程、函数

    阅读目录 一 视图 二 触发器 三 事务 四 存储过程 五 函数 六 流程控制 一 视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名 ...

  7. [PowerDesign]将数据库从SQL Server数据库转换为MySQL

    原文:[PowerDesign]将数据库从SQL Server数据库转换为MySQL 一.迁移Database Schema. 首先使用Sybase Powerdesigner的逆向工程功能,逆向出S ...

  8. mysql里面如何用sql语句让字符串转换为数字

    sql语句将字符串转换为数字默认去掉单引号中的空格,遇到空格作为字符串截止, SELECT '123 and 1=1' +0 结果为123 MySQL里面如何用sql语句让字符串的‘123’转换为数字 ...

  9. SQL Server 迁移数据到MySQL

    一.背景 由于项目开始时候使用的数据库是SQL Server,后来把存储的数据库调整为MySQL,所以需要把SQL Server的数据转移到MySQL:由于涉及的表比较多,所以想在MySQL中生成对应 ...

随机推荐

  1. 关于Block的copy和循环引用的问题

    http://blog.csdn.net/felix9/article/details/9619313 在实际开发中,发现使用Block有着比delegate和notification更简洁的优势.于 ...

  2. 十五、Java基础---------集合框架体系以及List

    在介绍集合之前先说一下数组,正如我们所知,数组是某一类型数据的集合,强调的是数据,而且必须单一:集合框架的不同之处在于存储的数据类型没有任何限制,既可以存储基本数据类型(会自动提升为相应的包装类)也可 ...

  3. An internal error occurred during: "Building workspace".

    当在eclipse中的web工程中增加了extjs4,出现An internal error occurred during: "Building workspace". Java ...

  4. 【转】PowerShell入门(三):如何快速地掌握PowerShell?

    转至:http://www.cnblogs.com/ceachy/archive/2013/02/01/HowToLearnPowerShell.html 如何快速地掌握PowerShell呢?总的来 ...

  5. rocketmq简单搭建

    摘要: 简单的部署管理RocketMQ队列 (nameserver broker在同一机器上) RocketMQ 是alibaba开源的消息队列. 本文使用的是开源版本v3.18 系统: centos ...

  6. RunTime的一些用法

    RunTime的一些用法   RunTime简介 RunTime简称运行时.OC就是运行时机制,其中最主要的是消息机制 对于OC来说,在编译的时候并不能决定真正调用哪个函数,只有真正运行时才会根据函数 ...

  7. mysql分区表的原理和优缺点

    1.分区表的原理 分区表是由多个相关的底层表实现,这些底层表也是由句柄对象表示,所以我们也可以直接访问各个分区,存储引擎管理分区的各个底层表和管理普通表一样(所有的底层表都必须使用相同的存储引擎),分 ...

  8. 20145227&20145201 《信息安全系统设计基础》实验一 开发环境的熟悉

    北京电子科技学院(BESTI) 实 验 报 告 课程:信息安全系统设计基础 班级:1452 姓名:李子璇 鄢曼君 学号:20145201 20145227 成绩: 指导教师:娄嘉鹏 实验日期:2016 ...

  9. SQL Server书籍整理

    1.<Microsoft SQL Server企业级平台管理实践>徐海蔚2.<SQL Server 2005 Performance Tuning性能调校>胡百敬3.<M ...

  10. visual studio插件开发dll类库免加全局缓存处理办法

    1.卸载VSIXProject 2.然后编辑*.csproj 修改如下: 3.重新加载项目 编辑source.extension.vsixmanifest 添加资产: 完事后,直接安装VISX就可以了