欧洲杯在线决赛直播

admin · 2004-12-01

  差别范例数据库的函数语法或众或少存正在分别,要思让效用类似的 SQL 查问语句正在差别范例的数据库中都能被亨通践诺,就要把各数据库都有的那些差同化函数语法停止翻译。

  

  利用 ORM 技艺也许将法式员誊写的查问转换成差别数据库的 SQL,相称于有必定的移植本领。但 ORM 技艺只合适应答 OLTP 场景下的简便 SQL,难以达成 OLAP 场景下较庞大 SQL 的移植,比方,利用了 ORM 技艺中不直接援救的函数,或许遭遇 FROM 中包罗子查问的庞大 SQL。

  集算器 SPL 计划了一套圭表的 SQL 查问语法,该语法内置豪爽函数(还正在不断追加中),可描绘更众常运算。SPL 中有一个 sqltranslate 函数,可能把这类圭表 SQL 翻译成差别数据库的 SQL,达成数据库的迁徙。

  譬喻如许的圭表 SQL:

  

SELECTCLIENT,YEAR(ORDERDATE),SUM(AMOUNT),COUNT(ORDERID)FROMORDERSGROUPBYCLIENT,YEAR(ORDERDATE)HAVINGSUM(AMOUNT)>2000

 

  用.sqltranlate(MYSQL) 翻译后就失掉:

  

SELECTCLIENT,YEAR(ORDERDATE),SUM(AMOUNT),COUNT(ORDERID)FROMORDERSGROUPBYCLIENT,YEAR(ORDERDATE)HAVINGSUM(AMOUNT)>2000

 

  而假设利用.sqltranslate(ORACLE) 将前往:

  

SELECTCLIENT,EXTRACT(YEARFROMORDERDATE),SUM(AMOUNT),COUNT(ORDERID)FROMORDERSGROUPBYCLIENT,EXTRACT(YEARFROMORDERDATE)HAVINGSUM(AMOUNT)>2000

 

  可能看到,圭表函数也许准确地按照数据库采用响应的函数。

  SPL 达成 SQL 移植,采用的战略是只对圭表 SQL 中的函数停止翻译,不翻译(原样照抄)语句,从而使圭表 SQL 可描绘更众的运算。譬喻,关于上面的子查问不管翻译成哪一种数据库 SQL 都不会变,也都可能平常践诺。

  

SELECTORDERID,MFROM(SELECTORDERID,MONTH(ORDERDATE)MFROMORDERS)T1

 

  集算器 SPL 是 Java 写的开源软件,很轻易被 JAVA 操纵 集成而利用这个 SQL 移植的效用,正在操纵法式中假设需求翻译 SQL 语句,可能直接挪用 api 伎俩:

  

Stringsql=SELECTCLIENT,YEAR(ORDERDATE),SUM(AMOUNT),COUNT(ORDERID)FROMORDERSGROUPBYCLIENT,YEAR(ORDERDATE)HAVINGSUM(AMOUNT)>2000;sql=com.raqsoft.dm.sql.SQLUtil.translate(sql,ORACLE);

 

文章推荐:

nba2k18传奇版

cba2k巨星时刻

nba2k11没声音

大赢家篮球比分