Stored procedures SAP HANA存储过程输出类型以及如何在SQLScript中重用/捕获输出

Stored procedures SAP HANA存储过程输出类型以及如何在SQLScript中重用/捕获输出,stored-procedures,hana,Stored Procedures,Hana,在SAP HANA中,我可以使用输入和输出参数创建一个过程。即使没有输出参数,该过程也可以输出一个表 我注意到存储过程中有三种版本的输出: 过程结束时选择-不声明结构 输出参数out参数varhcar(100) 隐式表定义返回表(var1 varchar(10))在函数参数之后和关键字之前语言SQLSCRIPT 这些参数的区别是什么?如何在其他存储过程中重用这些输出参数? 我唯一知道的是 调用过程(input1、input1、outputVar) 不幸的是,我不知道如何在不创建物理表的情况下将S

在SAP HANA中,我可以使用输入和输出参数创建一个过程。即使没有输出参数,该过程也可以输出一个表

我注意到存储过程中有三种版本的输出:

  • 过程结束时选择-不声明结构
  • 输出参数
    out参数varhcar(100)
  • 隐式表定义
    返回表(var1 varchar(10))
    在函数参数之后和关键字之前
    语言SQLSCRIPT
  • 这些参数的区别是什么?如何在其他存储过程中重用这些输出参数?

    我唯一知道的是

  • 调用过程(input1、input1、outputVar)
  • 不幸的是,我不知道如何在不创建物理表的情况下将SQL结果绑定到输出参数

    这个问题的原因

    第1期

    函数callBuildJoinOn返回空结果。由于SP_BUILD_JOIN_ON中的循环未执行,但列表以拆分字符串形式生成(均已测试)

    为什么要分成两个功能?


    如果在call语句

    之后甚至还有第四个选项可以从HANA SQLScript过程获取结果集,则游标的声明将导致编译器错误:结果视图(从HANA2开始不再受支持)

    但我们不要再引起更多的混乱了。 不同的选项可用于不同的场景:

  • 程序输入/输出参数用于将数据输入程序和结果输出程序。OUT参数可以绑定到其他SQLScript变量(当您从另一个过程调用该过程时),或者HANA客户端可以读取为类型为
    TABLE
    的每个OUT参数创建的结果集。例如,JDCB客户机将在过程执行后找到多个结果集并获取这些结果集

  • 表函数是返回表的函数,可以像表或视图一样使用:

    SELECT * FROM <tablefunction>( in_param1, in_param2, ...);
    
    SELECT*FROM(在参数1中,在参数2中,…);
    
    这提供了一个从函数中读回整个表或模拟参数化视图的简单选项

  • 您提到的其余选项是所谓的“默认结果集”。这实际上只在SQL编辑器或HANA客户机中有用,HANA客户机在过程执行后获取所有结果集。默认结果集不能绑定到任何SQLScript变量,也不能在SQL命令中引用


  • 问题是,
    joinOn
    被定义为输出参数:
    out joinOn nvarchar(1000)

    结果是:

  • 变量为空
  • 未填充变量:
    joinOn:=joinOn | | a.| | col.item导致
    null
    解决方案

  • out
    更改为
    inout
  • 初始化参数
    joinOn:=''

  • 感谢Thx为本主题提供了一些信息。我仍在努力重用此拆分函数的输出:我无法将
    rst
    分配给输出变量:/如果它是关于拆分功能本身的,那么现在有
    REGEXPR
    函数在相当长的一段时间内可用。如果是关于实际的作业,你能用一个可重复的问题示例来回答一个新问题吗?是的,这篇文章是关于参数以及如何使用参数的。。这个问题也没有完全回答:如何在另一个过程中重复使用一个过程的返回表(…)?我确实看到了正则表达式,但如果您知道如何使用正则表达式进行拆分,就不会拆分-如果没有循环,我很乐意读到您在这个线程中的答案:进一步细化的问题。函数之间传递参数的问题似乎不起作用。调用后还声明游标会导致编译器错误
    SELECT * FROM <tablefunction>( in_param1, in_param2, ...);