MySQL 兼容性¶
词法兼容¶
Oscar与MySQL的对比:
| 符号 | OSCAR | MySQL |
|---|---|---|
| ' | 限定符 | 限定符 |
| " | 标识符 | 限定符 |
| ` | 标识符 | 标识符 |
- 在MySQL中双引号(")、单引号(')都用作限定符,限定字符串常量, 反单引号(`)作为标识符,用于使用特殊字符、区分大小写等场景
- 在Oscar中使用单引号(')用作限定符,限定字符串常量,双引号(")作为标识符,用于使用特殊字符、区分大小写等场景
提供参数 ENABLE_MYSQL_QUOTE 兼容 MySQL 词法,该参数默认不开启,开启后 双引号(")用于标记限定符。 反单引号(`)作为标识符,该符号不受 ENABLE_MYSQL_QUOTE 参数影响
此参数仅建议在迁移mysql时开启,其余情况谨慎开启,开启后可能会导致其他语法解析问题
示例¶
set ENABLE_MYSQL_QUOTE=TRUE;
DROP SCHEMA `DEBUGOP` CASCADE;
CREATE SCHEMA `DEBUGOP`;
CREATE TABLE `DEBUGOP`.`TESTTABLE`(`COL1` INT,`NAME` TEXT);
INSERT INTO `DEBUGOP`.`TESTTABLE` VALUES(1,'TESTNAME');
INSERT INTO `DEBUGOP`.`TESTTABLE` VALUES(2,"TESTNAME");
INSERT INTO `DEBUGOP`.`TESTTABLE` VALUES(3,"TEST");
INSERT INTO `DEBUGOP`.`TESTTABLE` VALUES(4,'TEST');
SELECT * FROM `DEBUGOP`.`TESTTABLE` WHERE `NAME`="TESTNAME" ORDER BY `COL1`;
COL1(int) |NAME(text) |
-------------------------------
1 |TESTNAME |
-------------------------------
2 |TESTNAME |
总数目:2
UPDATE `DEBUGOP`.`TESTTABLE` SET `NAME`='TESTNAME' WHERE NAME='TEST';
DELETE `DEBUGOP`.`TESTTABLE` WHERE NAME='TESTNAME';
SELECT * FROM `DEBUGOP`.`TESTTABLE` WHERE `NAME`="TESTNAME" ORDER BY `COL1`;
COL1(int) |NAME(text) |
总数目:0
create or replace function `DEBUGOP`.`f1`(a int) return number is
r number;
begin
r := a * a;
return r;
end;
/
select `DEBUGOP`.`f1`(3);
f1(numeric) |
-----------------
9 |
总数目:1
create or replace procedure `DEBUGOP`.`myadd`(a int,b int) as
c int;
begin
c = a+b;
dbms_output.put_line('和为:' || c);
end;
/
EXEC `DEBUGOP`.`myadd`(3,5);