简介
在SAP HANA中除了可以用SQL Script来创建存储过程,还可用L 编程语言来实现具体应用程序中的复杂计算的存储过程。L的存储过程和SQL Script的创建基本一样,可以有数据类型或者表类型作为输入和输出的参数。也就是说L的可以其他的存储过程一样,可以被其他的SQL Script的存储过程或数据库客户端直接使用。
L是基于C/C++的,可以看着C++的子集;它是一种静态类型;L是要编译的,L的函数不是在虚机上执行,它是被放在标准的C/C++函数上执行。
实例介绍
L存储过程
CREATE PROCEDURE SYSTEM.PROC ( ... ) LANGUAGE LLANG READS SQL DATA AS BEGIN import "content:com.sap.my.lib" mylib; export Void main(...) { ... mylib::f1(...); ... } END
首先content:com.sap.my.lib 被import, mylib是L的namespace。前缀content表明这个library在SAP HANA的repository中。在main函数中,我们调用了library中f1函数。整个L的代码和C++的看起来非常像。
用L自定义SQL Function
CREATE FUNCTION sqr (x DOUBLE) RETURNS "Y" DOUBLE LANGUAGE LLANG AS BEGIN export Void main(Double "X" x, Double "Y" & y) { y = x*x; } END;
大家可以用这样的语句来调用这个function。
SELECT sqr(DoubleVALUECol) FROM TABLE1
暂时就先介绍这么点,有兴趣的同学们可以线下交流。