SAP HANA:如何将存储过程的结果插入到本地临时表中

时间:2018-03-20 10:47:52

标签: stored-procedures temp-tables hana-sql-script

我试图将读/写存储过程的结果存储在本地临时表中。创建临时表后我正在写 -

INSERT INTO #TMP call SPName;

将结果存储在临时表中,但表示不支持功能。无论如何都存储临时表中的存储过程的结果。我不想改变已构建SP的定义,但希望将结果存储在临时表中以与另一组语句连接以获得我的最终结果。

2 个答案:

答案 0 :(得分:0)

您是否尝试将输出表类型用作存储过程参数之一?然后在存储过程中使用out参数返回结果?

这是文档中许多示例中使用的典型方法。

DROP   TYPE TT_MYTYPE;
CREATE TYPE TT_MYTYPE AS TABLE(A VARCHAR (100), B INT);

DROP   PROCEDURE MYPROC;
CREATE PROCEDURE MYPROC (OUT OUTPUT_TABLE TT_MYTYPE )
   LANGUAGE SQLSCRIPT SQL SECURITY INVOKER 
   AS
   BEGIN
     OUTPUT_TABLE = SELECT 'Test' as A, 3 as B FROM DUMMY;
   END;

-- output table is created dynamically and in the overview you can get the table name
CALL MYPROC( ? ) with overview;

-- pass an output parameter table to receive the result
DROP   TABLE MYOUTPUT;
CREATE TABLE MYOUTPUT LIKE TT_MYTYPE;

CALL MYPROC( MYOUTPUT ) with overview;
SELECT * FROM MYOUTPUT;

希望这有帮助。

答案 1 :(得分:0)

您可以使用过程定义的 WITH RESULT VIEW 扩展名。 例如,如果我使用@ Abdel的代码

CREATE PROCEDURE MYPROC (OUT OUTPUT_TABLE TT_MYTYPE )
   LANGUAGE SQLSCRIPT 
   READS SQL DATA
   WITH RESULT VIEW myView
   AS
   BEGIN
     OUTPUT_TABLE = SELECT 'Test' as A, 3 as B FROM DUMMY ;
   END;

然后您可以在myView上执行SELECT语句,如下所示

SELECT * FROM myView ;

有关如何使用With Result View to select data from HANA procedure的更多详细信息,请参阅给定的教程。

如果您的过程接受输入参数,则可以像参数视图一样查询由“with result view”创建的视图