Technology Blogs by SAP
Learn how to extend and personalize SAP applications. Follow the SAP technology blog for insights into SAP BTP, ABAP, SAP Analytics Cloud, SAP HANA, and more.
cancel
Showing results for 
Search instead for 
Did you mean: 
0 Kudos

SAP HANAnative development中,可以创建两种类型的存储过程:Text类型的存储过程以.hdbprocedure为文件后缀,XML类型的存储过程以.procedure为文件后缀。其中,XML类型的存储过程可以和Modeler Procedure editor兼容,但可能不支持SQLScript的一些新特性。其激活以后的存储过程在_SYS_BIC schema下。Text类型的存储过程可以选择其激活后所要保存在的schema名。

其中,XML类型的存储过程,支持使用procedure template来创建存储过程。Procedure template顾名思义就是一个存储过程的模板。对于一系列可能有相同逻辑的但是操作对象不同的存储过程,可以通过使用procedure template保存相同的操作架构,来简化开发过程。Procedure template中的操作都执行在用户定义的相关占位符上。对于具体的procedure template instance,即使用procedure template的存储过程,用具体的对象名来代替对应的占位符。

占位符只能使用在存储过程的BEGINEND之间,使用“<”和“>”包围。能使用占位符的对象包括:

  • Schema name
  • Table name and table column name
  • View name and view column name
  • Procedure name

创建 Procedure Template

     切换到“SAP HANA Development”的perspective下,在相应的package下,右键,选择New—> File,输入procedure template的名字,并以“.proceduretemplate”作为文件后缀名。

     在上方的Template Parameters表中添加在这个procedure template中所要使用的占位符,点击绿色加号按钮添加参数。同样,所要在IN/OUT参数中使用的表类型可以在Local Table Types的标签下定义。

     在下半部的Template Script中,实现procedure template的内部逻辑。使用Template parameters中定义的占位符,使用时使用“<”和“>”来包围占位符。

     完成后,保存文件,并提交(Commit)和激活(activate)。

创建 Procedure Template Instance

      使用已创建的procedure template所得的存储过程称为procedure template instance,需要将指明所有占位符所对应的相关数据库对象。并且所使用的procedure template必须要check out 到本地的workspace,才可以使用。

     在“SAP HANA Development”的perspective下,右键相应的package下,选择New—> Others—>SAP HANA –>Database Development,选择“Stored Procedure”。

     输入File name,在File format处选择“XML (.procedure) – Deprecated”。在Advanced中勾选Create from procedure template,并选择前边已创建好的procedure template

    在Template  Parameters中,填写所有占位符所对应的的对象名,用来在procedure template instance中替代占位符得到具体的存储过程。

     保存文件,并提交(Commit)和激活(activate)。则,可以在_SYS_BIC下,看到已经建好的存储过程。可以查看其定义。

注:

  1. 可以修改procedure templateTemplate ParametersTemplate Script部分。若只修改Template Script部分,文件被保存和激活后,所有引用的存储过程都完成了同样的修改。如果修改Template Parameters部分,则每个引用的存储过程也要进行编辑修改。
  2. 如果要删除procedure template,则要保证当前没有存储过程引用这个procedure template


想获取更多SAP HANA学习资料或有任何疑问,请关注新浪微博@HANAGeek!我们欢迎你的加入!转载本文章请注明作者和出处<http://scn.sap.com/community/chinese/hana/blog/2014/06/24/sap-hana%E4%B8%ADprocedure-template%E7%9A%... >,请勿用于任何商业用途。