这三者的关系图如下所示:
SQL是SQLScript的一部分,Procedure可以用SQLScript来写,也可以用其他语言来编写。
一.SQL
HANA中的SQL方言是基于PTIME的方言,基本与标准的SQL语句类似。
SQL中的标识符有以下规范:
1.不加引号(包括单,双引号)的字符都是不区分大小写的,最终都会转化为大写。如Test1 -> TEST1
2.必须要以字母开头,其他字符包括字母,数字,“$”, “#”, “_” 等。
3. 双引号里的字符是大小写敏感的,如“Test1” -> “Test1”。
4. SQL中的String用单引号包围,字符串是区分大小写的。
5. HANA中创建数据库用schema,如:create schema test。
6. 表的复制:
create table myPRIME LIKEPRIME WITH DATA;这是连带表中记录复制,如果只是复制表结构,就不加WITH DATA。
7.在Linux下,用hdbsql来执行,用命令来执行:
下面举个例子说明用SQLScript来写Procedure。
DROP type PRIME_TYPE;
CREATE type PRIME_TYPE AS TABLE ( "NUMBER" INT CS_INT );
DROP PROCEDURE TESTPRO;
CREATE PROCEDURE TESTPRO(IN input1 PRIME_TYPE,OUT result PRIME_TYPE)
LANGUAGE SQLSCRIPT AS
BEGIN
result=select POWER(NUMBER,2) AS NUMBER from:input1;
END;
select NUMBER FROM PRIME;
call TESTPRO(PRIME,?)
这段程序中有输入输出参数,自定义了一个表类型,输出一个表。
也可以用R语言来编写Procedure,但是这种方式效率不高,因为需要配置环境,安装R Server,编译R语言,加了一个中间过程。