达梦数据库存储过程的数据类型

DM8存储过程数据类型总结
一. 程序的数据类型与操作符

  1. 常用数据类型
    1.1数值型数据类型
    定点:numeric,decimal,两者功能相似
    NUMERIC 数据类型用于存储零、正负定点数。其中:精度是一个无符号整数,定义了总的数字数,精度范围是 1~38,标度定义了小数点右边的数字位数,定义时如省略精度,则缺省是 16。如省略标度,则缺省为 0。一个数的标度不应大于其精度。
    例如:NUMERIC(4,1)定义了小数点前面 3 位和小数点后面 1 位,共 4 位的数字,范围在-999.9 到 999.9。所有 NUMERIC 数据类型,如果其值超过精度,达梦数据库返回一个出错信息,如果超过标度,则多余的位截断。
    浮点:float,double
    FLOAT 是带二进制精度的浮点数,精度最大不超过 53,如省略精度,则二进制精度为 53,十进制精度为 15。取值范围为-1.7E+308~1.7E+308。
    Double同 FLOAT 相似,精度最大不超过 53。
    整型:int,bigint,tinyint,smallint
    Int用于存储有符号整数,精度为 10,标度为 0。取值范围为:-2147483648(-231)~+2147483647(231-1)。
    Bigint用于存储有符号整数,精度为 19,标度为 0。取值范围为:-9223372036854775808(-263)~+9223372036854775807(263-1)。
    Tinyint用于存储有符号整数,精度为 3,标度为 0。取值范围为:-128~+127。
    Smallint用于存储有符号整数,精度为 5,标度为 0。取值范围为:-32768(-2^15)~ +32767(2^15-1)。
    1.2字符型数据类型
    定长字符:char
    定长字符串,最大长度由数据库页面大小决定,长度不足时,自动填充空格。
    变长字符:varchar
    可变长字符串,最大长度由数据库页面大小决定。
    1.3多媒体数据类型
    文本类型:text,longvarchar
    变长字符串类型,其字符串的长度最大为 100G-1,可用于存储长的文本串。
    图像类型:image,longvarbinary
    可用于存储多媒体信息中的图像类型。图像由不定长的象素点阵组成,长度最大为 100G-1 字节。该类型除了存储图像数据之外,还可用于存储任何其它二进制数据。
    大对象:blob,clob
    BLOB 类型用于指明变长的二进制大对象,长度最大为 100G-1 字节。
    CLOB 类型用于指明变长的字符串,长度最大为 100G-1 字节。
    1.4日期时间数据类型
    一般日期类型:date,time,datetime
    DATE 类型包括年、月、日信息,定义了’-4712-01-01’和’9999-12-31’之间任何一个有效的格里高利日期。
    TIME 类型包括时、分、秒信息,定义了一个在’00:00:00.000000’和’23:59:59.999999’之间的有效时间。TIME 类型的小数秒精度规定了秒字段中小数点后面的位数,取值范围为 0~6,如果未定义,缺省精度为 0。
    DATETIME 类型包括年、月、日、时、分、秒信息,定义了一个在’-4712-01-0100:00:00.000000’和’9999-12-31 23:59:59.999999’之间的有效格里高利日期时间。小数秒精度规定了秒字段中小数点后面的位数,取值范围为 0~6,如果未定义,缺省精度为 6。
    时区数据类型:with time zone
    TIME WITH TIME ZONE 描述一个带时区的 TIME 值,其定义是在 TIME 类型的后面加上时区信息。时区部分的实质是 INTERVAL HOUR TO MINUTE 类型,取值范围:-12:59 与 +14:00 之间。例如:TIME ‘09:10:21 +8:00’。
    TIMESTAMP WITH TIME ZONE描述一个带时区的 TIMESTAMP 值,其定义是在 TIMESTAMP 类型的后面加上时区信息。时区部分的实质是 INTERVAL HOUR TO MINUTE 类型,取值范围:-12:59 与 +14:00 之间。例如:’2009-10-11 19:03:05.0000 -02:10’。
    TIMESTAMP WITH LOCAL TIME ZONE描述一个本地时区的 TIMESTAMP 值,能够将标准时区类型 TIMESTAMP WITH TIME ZONE 类型转化为本地时区类型,如果插入的值没有指定时区,则默认为本地时区。
    时间间隔数据类型:DM 支持两类十三种时间间隔类型:两类是年-月间隔类和日-时间隔类,它们通过时间间隔限定符区分,前者结合了日期字段年和月,后者结合了时间字段日、时、分、秒。由时间间隔数据类型所描述的值总是有符号的。
    1.5绑定数据类型
    在许多时候,DMSQL 程序变量被用来处理存储在数据库表中的数据。这种情况下,变量应该拥有与表列相同的类型。例如表 T(ID
    INT, NAME VARCHAR(30))中字段 NAME 类型为 VARCHAR(30)。对应地在 DMSQL 程序中,我们可以声明一个变量:
    DECLARE
    V_NAME VARCHAR(30);
    但是如果 T 中的 NAME 字段定义发生了变化,比如变为 VARCHAR(100)。那么存储过程中的变量 V_NAME 也要相应修改为:
    DECLARE
    V_NAME VARCHAR(100);
    如果用户应用中有很多的变量以及 DMSQL 程序代码,这种处理可能是十分耗时和容易出错的。
    为了解决上述问题,DMSQL 程序提供了 %TYPE 类型。%TYPE 可以将变量同表列的类型进行绑定。例如:
    DECLARE
    V_NAME T.NAME%TYPE;
    通过使用 %TYPE,V_NAME 将拥有 T 表的 NAME 列所拥有的类型。如果表 T 的 NAME 列类型定义发生变化,V_NAME 的类型也随之自动发生变化,而不需要用户手动修改。
  2. 程序的定义调用
    2.1存储过程
    DBA 或具有 CREATE PROCEDURE 权限的用户可以使用上述语法新创建一个存储过程。OR REPLACE 选项的作用是当同名的存储过程存在时,首先将其删除,再创建新的存储过程。IF NOT EXISTS 选项的作用是当同名的存储过程存在时,忽略本次存储过程创建操作。当同时指定 OR REPLACE 和 IF NOT EXISTS 选项时,按照 OR REPLACE 选项的策略执行。
    2.2存储函数
    存储函数与存储过程在结构和功能上十分相似,主要的差异在于:
    • 存储过程没有返回值,调用者只能通过访问 OUT 或 IN
    OUT 参数来获得执行结果,而存储函数有返回值,它把执行结果直接返回给调用者;
    • 存储过程中可以没有返回语句,而存储函数必须通过返回语句结束;
    • 不能在存储过程的返回语句中带表达式,而存储函数必须带表达式;
    • 存储过程不能出现在一个表达式中,而存储函数可以出现在表达式中。
    2.3参数
    存储模块及模块中定义的子模块都可以带参数,用来给模块传送数据及向外界返回数据。在存储过程或存储函数中定义一个参数时,必须说明名称、参数模式和数据类型。三种可能的参数模式是:IN(缺省模式)、OUT 和 IN OUT,意义分别为:
    • IN:输入参数,用来将数据传送给模块;
    • OUT:输出参数,用来从模块返回数据到进行调用的模块;
    • IN OUT:既作为输入参数,也作为输出参数。
  • 19
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值