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”作为文件后缀名。

/wp-content/uploads/2014/06/1_482594.png

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

/wp-content/uploads/2014/06/2_482595.png

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

/wp-content/uploads/2014/06/3_482596.png

     完成后,保存文件,并提交(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”。

/wp-content/uploads/2014/06/4_482603.png

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

/wp-content/uploads/2014/06/5_o_482604.png

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

/wp-content/uploads/2014/06/7_482605.png

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

/wp-content/uploads/2014/06/8_482612.png

注:

  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%84%E4%BB%8B%E7%BB%8D%E5%8F%8A%E4%BD%BF%E7%94%A8 >,请勿用于任何商业用途。

To report this post you need to login first.

Be the first to leave a comment

You must be Logged on to comment or reply to a post.

Leave a Reply