KSQL

王朝百科·作者佚名  2010-09-17  
宽屏版  字体: |||超大  

概述什么是KSQLKSQL对金蝶产品实现多数据库支持非常重要的基础引擎。所有与金蝶ERP产品支持的数据库通讯的应用程序都通过向数据库服务器发送KSQL语句来实现通讯,与应用程序的用户界面无关。

KSQL是SQL92的子集。它抽取了SQL92的部分语法来满足金蝶ERP产品的最大功能集合,并随着金蝶BOS产品的发展逐渐丰富和完善。

1. 一种金蝶自己定义的SQL方言

2. 需要翻译到具体数据库厂商的SQL方言

3. KSQL具备的特性,能够翻译到我们支持的所有数据库中

4. 类似于MS SQL SERVER的T-SQLKSQL的必要性1. 金蝶BOS平台的多数据库支持策略

2. 大多数开发人员只熟悉一种数据库

3. 大多数不同数据库的方言特性具有共通性,可以抽取为公共的语言特性

4. SQL翻译效率很高

5. KSQL提供临时表管理等功能

KSQL规范KSQL语法规则规范

用于

大写

KSQL 关键字或文法终结符(在具体语法子句中予以解释)

小写

KSQL的语法子句和文法非终结符(在具体语法子句中予以解释)

斜体

KSQL 语法中用户提供的参数。

| (竖线)

分隔括号或大括号内的语法项目。只能选择一个项目。

[ ] (方括号)

可选语法项目。不必键入方括号。

{}(大括号)

必选语法项。不要键入大括号。

[,...n]

表示前面的项可重复n次。每一项由逗号分隔。

[ ...n]

表示前面的项可重复n次。每一项由空格分隔。

加粗

数据库名、表名、列名、索引名、存储过程、实用工具、数据类型名以及必须按所显示的原样键入的文本。

<标签> ::=

语法块的名称。此规则用于对可在语句中的多个位置使用的过长语法或语法单元部分进行分组和标记。适合使用语法块的每个位置由括在尖括号内的标签表示:<标签>。

除非特别申明,否则所有对数据库对象名的KSQL引用可以是格式如下:

[database_name.]object_name

object_name引用对象的名称。

当引用某个特定对象时,不必总是为KSQL指定标识该对象的数据库实体名称,也可以直接使用object_name引用某个特定对象,但它要依赖它自己所在的上下文环境。KSQL数据类型数据类型预览数据类型

长度

Sql server

Oracle

Db2

CHAR

[1,254]

CHAR[(n)]

CHAR[(n)]

CHAR[(n)]

VARCHAR

[1,4000]

VARCHAR[(n)]

VARCHAR2(n)

VARCHAR(n)

NCHAR

[1,2000]

NCHAR[(n)]

NCHAR[(n)]

?

NVARCHAR

[1,4000]

NVARCHAR[(n)]

NVARCHAR2(n)

BINARY

[1,2000]

BINARY[(n)]

RAW( n )

VARCHAR(n) FOR BIT DATA

VARBINARY

[1,8000]

VARBINARY[(n)]

LONG RAW

LONG VARCHAR FOR BIT DATA

BLOB

[1,2G]

IMAGE

BLOB

BLOB(n)

CLOB

[1,2G]

TEXT

CLOB

CLOB(n)

NCLOB

[1,1G]

NTEXT

NCLOB

?

INT,INTEGER

[-2^31,2~31-1]

INT

NUMBER(38)

INT

DECIMAL

[-10^31+1,10^31-1]

DATETIME

DATETIME

DATE

DATE TIME TIMESTAMP

数据类型分类

KSQL支持的数据类型为CHAR , VARCHAR , NCHAR,NVARCHAR,BINARY,VARBINARY, BLOB ,CLOB , NCLOB, INT, INTEGER,DECIMAL ,DATE,TIME DATETIME

数据类型层次结构

字符和二进制字符串大对象

CHAR

VARCHAR

CLOB

UNICODE字符和字符串大对象

NCHAR

NVARCHAR

NCLOB

二制数据类型

BINARY

VARBINARY

二进制大对象

BLOB

精确数字

INT

INTEGER

近似数字 DECIMAL

时间数据类型

日期 DATE

时间 TIME

时间戳DATETIME

数据类型的优先顺序

当两个不同数据类型的表达式用运算符组合后,数据类型的优先顺序规则确定哪种数据类型要向另一种转换。优先顺序低的数据类型向优先顺序高的数据类型转换。如果此转换不是目标数据库所支持的固有转换,则返回错误。当两个操作数表达式有相同的数据类型时,运算的结果就为那种数据类型。

下面是KSQL数据类型的优先顺序:

CHAR

VARCHAR

NCHAR

NVARCHAR

BINARY

VARBINARY

BLOB

CLOB

NCLOB

DECIMAL

INT

BINARY

VARBINARY

BLOB

CLOB

NCLOB

DECIMAL

INT INTEGER

DATETIME (最高)运算符号+(加)

+(正)

-(减)

-(负)

*(乘)

/(除)

=(等于)

>(大于)

<(小于)

>=(大于或等于)

<=(小于或等于)

<>(不等于)

!=(不等于)注释――(单行注释)

//(单行注释)

/* */(多行注释)通配符[ ](通配符 — 需匹配的字符)

[^](通配符字符 — 无需匹配的字符)

_(通配符 — 匹配一个字符)

%(通配符 — 匹配一个或多个字符)标识符号

KSQL规定,数据库名,数据库别名,数据表名,数据表别名,字段名,字段别名,视图名,视图别名,索引名,索引别名, 约束名都属于标识符范围。常量

一、时间常量

语法

格式

含义

{d 'yyyy-mm-dd'}

日期

{t 'hh:mm:ss'}

时间

{ts 'yyyy-mm-dd hh:mm:ss'}

时间戳

注释

时间戳的日期和时间之间只允许出现一个空格分隔符号。

时间中不支持毫秒。

示例

时间戳:{ts‘2002-07-17 10:51:18’}

日期:{d‘2002-07-17’}

时间:{t‘10:51:18’}

二、字符串常量

语法

[ N | n ] ‘ [ ^’ ] ’

参数

N

指示该字符歘常量为UNICODE字符串。

n

指示该字符歘常量为UNICODE字符串。

注释

包含在’’中的除’以外的任何字符序列。

示例

合法的字符串常量:‘’, ‘ ‘, ‘ ‘, ‘ ^ ‘, ’hello’等。

合法的UNICODE字符串常量:n‘’, N‘ ‘, N‘ ‘, n‘ ^ ‘, N’hello’等。

不合法的字符串常量:’’’,’’’’’等。

不合法的字符串常量:N’’’,n’’’’’等。

 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝百科 版权所有