MySQL与Oracle 差异比较之二基本语法
- 基本语法
| 编号 | 类别 | ORACLE | MYSQL | 注释 |
| 1 | 变量的声明方式不同 | li_index NUMBER := 0 | DECLARE li_index INTEGER DEFAULT 0 | 1. mysql 使用DECLARE定义局部变量. 定义变量语法为: DECLARE var_name[,...] type [DEFAULT value] 要给变量提供一个默认值,需要包含一个DEFAULT子句。值可以被指定为一个表达式,不需要为一个常数。如果没有DEFAULT子句,初始值为NULL。 |
| 2 | 变量的赋值方式不同 | lv_inputstr := iv_inputstr | SET lv_inputstr = iv_inputstr | 1. oracle变量赋值使用:= mysql 使用赋值使用set关键字. 将一个值赋给一个变量时使用"=". |
| 3 | 跳出(退出)语句不同 | EXIT; | LEAVE procedure name; | 1. oracle: 如果exit语句在循环中就退出当前循环.如果exit语句不再循环中,就退出当前过程或方法. Mysql: 如果leave语句后面跟的是存储过程名,则退出当前存储过程. 如果leave语句后面跟的是lable名. 则退出当前lable. |
| while 条件 loop exit; end loop; |
label_name:while 条件 do leave label_name; end while label_name; |
|||
| 4 | 定义游标 | TYPE g_grp_cur IS REF CURSOR; |
DECLARE cursor_name CURSOR FOR SELECT_statement; | oracle可以先定义游标,然后给游标赋值. mysql定义游标时就需要给游标赋值. Mysql定义游标出自 Mysql 5.1 参考手册20.2.11.1.声明光标. |
| 5 | 定义数组 | TYPE unpacklist_type IS TABLE OF VARCHAR2(2000) INDEX BY BINARY_INTEGER; | 可以使用临时表代替oracle数组, 也可以循环拆分字符来替代oracle数组. | 目前可以使用临时表来代替oracle数组. 详见<<2009002-OTMPPS-Difficult Questions-0001.doc>>中2.4 Mysql数组处理部分 |
| 6 | 注释方式不同 | "-- message" 或 "/** …. */" 或 "/* …. */" | "-- message" 或 "/* …. */" 或 "#" | mysql注释来自 MySQL 5.1参考手册 9.5. 注释语法, 建议同oracle一样, 单行用--, 多行/* */ |
| 7 | 自带日期时间函数格式不同 | Oracle时间格式:yyyy-MM-dd hh:mi:ss | Mysql时间格式:%Y-%m-%d %H:%i:%s | 1. MYSQL日期字段分DATE和TIME两种. ORACLE日期字段只有DATE,包含年月日时分秒信息. 2. mysql中取当前系统时间为now()函数,精确到秒. oracle中取当前数据库的系统时间为SYSDATE, 精确到秒. |
| 8 | 日期加减 | 当前时间加N天: sysdate+N 当前时间减N天: sysdate-N |
日期相加: date_add(now(), INTERVAL 180 DAY) 日期相减: date_sub('1998-01-01 00:00:00', interval '1 1:1:1' day_second) |
|
| 9 | 字符串连接符不同 | result := v_int1||v_int2; | set result = concat(v_int1,v_int2); | 1. oracle使用||连接字符串,也可以使用concat函数. 但Oracle的concat函数只能连接两个字符串. Mysql使用concat方法连接字符串. MySQL的concat函数可以连接一个或者多个字符串,如 mysql> select concat('10'); 结果为: 10. mysql> select concat('11','22','33','aa'); 结果为: 112233aa 2. "||"在Mysql是与运算 |
| 10 | 定义游标不同 | CURSOR l_bk_cur IS SELECT B.BK_HDR_INT_KEY, B.BK_NUM FROM ES_SR_DTL_VRB A, ES_BK_HDR B WHERE A.BK_HDR_INT_KEY = B.BK_HDR_INT_KEY AND b.BK_STATUS != ES_BK_PKG.g_status_can AND A.SR_HDR_INT_KEY = ii_sr_hdr_int_key; |
DECLARE l_bk_cur CURSOR FOR SELECT B.BK_HDR_INT_KEY, B.BK_NUM FROM ES_SR_DTL_VRB A, ES_BK_HDR B WHERE A.BK_HDR_INT_KEY = B.BK_HDR_INT_KEY AND b.BK_STATUS != ES_BK_PKG.g_status_can AND A.SR_HDR_INT_KEY = ii_sr_hdr_int_key; |
详见<<2009002-OTMPPS-Difficult Questions-0001.doc>>中2.2 Mysql游标处理部分 |
| 11 | 事务回滚 | ROLLBACK; | ROLLBACK; | oracle和mysql中使用方法相同 |
| 12 | GOTO语句 | GOTO check_date; | GOTO check_date; | oracle和mysql中使用方法相同 |
MySQL与Oracle 差异比较之二基本语法的更多相关文章
- MySQL与Oracle 差异比较之二函数
函数 编号 类别 ORACLE MYSQL 注释 1 数字函数 round(1.23456,4) round(1.23456,4) 一样:ORACLE:select round(1.23456,4) ...
- MySQL与Oracle 差异比较之六触发器
触发器 编号 类别 ORACLE MYSQL 注释 1 创建触发器语句不同 create or replace trigger TG_ES_FAC_UNIT before insert or upd ...
- MySQL与Oracle 差异比较之四条件循环语句
循环语句 编号 类别 ORACLE MYSQL 注释 1 IF语句使用不同 IF iv_weekly_day = 'MON' THEN ii_weekly_day := 'MON';ELS ...
- MySQL与Oracle 差异比较之七其它
其它 编号 类别 ORACLE MYSQL 注释 1 内连接的更改 1.select a.*, b.*, c.*, d.* from a, b, c, d where a.id = b.id a ...
- MySQL与Oracle 差异比较之七用户权限
用户权限 编号 类别 ORACLE MYSQL 注释 1 创建用户 Create user user_name identified by user_password default tablespa ...
- MySQL与Oracle 差异比较之五存储过程&Function
存储过程&Function 编号 类别 ORACLE MYSQL 注释 1 创建存储过程语句不同 create or replace procedure P_ADD_FAC( id_fac ...
- MySQL与Oracle 差异比较之三函数
函数 编号 类别 ORACLE MYSQL 注释 1 数字函数 round(1.23456,4) round(1.23456,4) 一样:ORACLE:select round(1.23456,4) ...
- MySQL与Oracle 差异比较之一数据类型
数据类型 编号 ORACLE MYSQL 注释 1 NUMBER int / DECIMAL DECIMAL就是NUMBER(10,2)这样的结构INT就是是NUMBER(10),表示整型:MYSQL ...
- [转]MySQL与Oracle 差异比较之一数据类型
数据类型 Oracle MySQL 1 NUMBER int / DECIMAL DECIMAL就是NUMBER(10,2)这样的结构INT就是是NUMBER(10),表示整型:MYSQ ...
随机推荐
- C#格式化输出
double a = 12354.365; Console.WriteLine(string.Format("{0:f4}", a)); 输出a的四位小数
- MainWndProc运行观察
MainWndProc运行观察 把MainWndProc改写成如下代码,便于观察:procedure TWinControl.MainWndProc(var Message: TMessage);be ...
- Recover Binary Search Tree-恢复二叉查找树
题目描述: 由于某种原因一个二叉排序树的两个节点的元素被交换,在不改变树的结构的情况下恢复这颗二叉排序树 题目来源: http://oj.leetcode.com/problems/recover-b ...
- NET在SQL Server中的图片存取技术
本文总结如何在.Net WinForm和.Net WebForm(asp.net)中将图片存入SQL Server中并读取显示的方法 .1.使用asp.net将图片上传并存入SQL Server中,然 ...
- Linux实用命令
0. 基本命令 1. 压缩 解压 tar -zcvf a.tar.gz a #把a压缩成a.tar.gz tar -zxvf a.tar.gz #把a.tar.gz解压成a 2. vim小结 2.1 ...
- Data Base MySQL的常用命令
MySQL的常用命令 一.下载地址: http://www.mysql.com 二.安装注意: root默认密码:123456 三.常用命令: 1.创建用户并授权: 创建用户,只能本地访问:cr ...
- git的使用--不错的博客【转】
转自:http://www.cnblogs.com/wang_yb/p/3867221.html GIT 的常规操作 常规操作也是我自己平时常用的几个命令, 学自于 pro git 这本书中 git ...
- iOS-APP中添加启动界面
iOS,非常高兴的又回到了这个领域.纠结的就业之路...找工作的这段时间里,原本以为是iOS的游戏开发,却一直只有后台的offer,到Android,最后正式上班的时候却被告知调到了iOS开发,当然不 ...
- [转载]java的几种对象(PO,VO,DAO,BO,POJO)解释
原文地址:java的几种对象(PO,VO,DAO,BO,POJO)解释作者:munandong 一.PO:persistant object 持久对象,可以看成是与数据库中的表相映射的java对象.最 ...
- Bundle对象的使用
在Android开发中,如果要通过一个Activity启动另外一个Activity,需要调用startActivity()函数,这个函数的参数是一个Intent对象,这个对象通常的初始化方式如下: I ...