GP程序开发规范.doc

GP程序开发规范.doc

ID:55550419

大小:75.00 KB

页数:6页

时间:2020-05-16

GP程序开发规范.doc_第1页
GP程序开发规范.doc_第2页
GP程序开发规范.doc_第3页
GP程序开发规范.doc_第4页
GP程序开发规范.doc_第5页
资源描述:

《GP程序开发规范.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、GP程序开发规范一.GP程序语法规范1.程序格式GP和oracle不同,没有存储过程的概念,统一为function,无返回值的function就相当于oracle中的procedure。在gp里,函数体被认为是一个字符串文本,所以你需要使用单引号或者美元符界定它,在函数的最后,需要一个LANGUAGE子句,因为gp的函数可以用多种语言来写,一般我们使用plpgsql。没有返回值:CREATEORREPLACEFUNCTIONsp_test()RETURNSvoidAS$BODY$Begin……END$BODY$LANGUAGEplpgsqlVOLAT

2、ILE;有返回值:CREATEORREPLACEFUNCTIONsp_test()RETURNSnumericAS$BODY$Begin……RETURNres;END$BODY$LANGUAGEplpgsqlVOLATILE;带参数:CREATEORREPLACEFUNCTIONsp_test(v_paravarchar)RETURNSvoidAS$BODY$Begin……END$BODY$LANGUAGEplpgsqlVOLATILE;2.数据类型名字描述charactervarying(n),varchar(n)变长,有长度限制character

3、(n),char(n)定长,不足补空白text变长,无长度限制在gp中,varchar和charactervarying,char和character是等价的,text则相当于oracle中的long,blob,clob等,用于存放超长字符串或二进制文件。名字存储空间描述最低值最高值timestamp[(p)][withouttimezone]8字节日期和时间4713BCADtimestamp[(p)]withtimezone8字节日期和时间,带时区4713BCADinterval[(p)]12字节时间间隔-年年date4字节只用于日期4713BCA

4、Dtime[(p)][withouttimezone]8字节只用于一日内时间00:00:0024:00:00time[(p)]withtimezone12字节只用于一日内时间,带时区00:00:00+145924:00:00-1459因为interval的存在,所以在oracle中计算时间间隔的方法就无法适用于gp,timestamp类型的数据相减后会生成格式为1day02:20:40.32323这样的数据,需要用extract函数把这个时间以日,时,分来分别计算之后累计,得到具体的间隔。名字存储空间描述范围smallint2字节小范围整数-3276

5、8到+32767integer4字节常用的整数-到+bigint8字节大范围的整数-到decimal变长用户声明精度,精确无限制numeric变长用户声明精度,精确无限制real4字节变精度,不精确6位十进制数字精度doubleprecision8字节变精度,不精确15位十进制数字精度serial4字节自增整数1到bigserial8字节大范围的自增整数1到1.游标的使用在gp中,游标的定义、使用与oracle略有不同,下面列出一个配合found使用的游标实例。cur_testCURSORforSELECTf_testfromt_test;openc

6、ur_test;loopfetchcur_testintov_test;ifFOUNDthen……elseexit;(此处不同于oracle的exitwhencur_test%NOTFOUND)endif;endloop;closecur_conf;2.异常处理抛出异常的方式与oracle不同。Oracle:raise_application_error(-20001,'XXX');Gp:RAISEEXCEPTION'xxx';如果要抛出的异常带有参数,则为:RAISEEXCEPTION'%',parameter;gp同时支持sqlcode和sqls

7、tate两种异常代码,因为sqlcode的时效性已经过了,所以一般采用sqlstate。1.事务在gp中,已经不再支持setautocommit=false(即关闭自动提交)这个特性,所以在函数开头都隐含了一个starttransaction,函数中每一条语句后都带有一个commit,因此我们可以认为gp是没有事务的概念的,即不支持在程序中间进行单独的commit。但仍然支持使用savepoint以及rollbacktosavepoint。在发生异常后,因为gp把整个程序看成一个事务,所以整个程序都会回滚。2.系统函数的使用这里只列出相对关键的系统函

8、数。类型转换函数:函数返回类型描述例子to_char(timestamp,text)text把时间戳转换成字

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。