0

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

INSERT INTO #TMP call SPName;

将结果存储在临时表中,但它说功能不支持。无论如何将存储过程的结果存储在临时表中。我不想更改已经构建的 SP 的定义,但想将结果存储在临时表中以加入另一组语句以获得最终结果。

4

2 回答 2

2

您是否尝试使用输出表类型作为存储过程参数之一?然后在存储过程中使用该 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;

希望这可以帮助。

于 2018-03-23T20:39:08.687 回答
1

您可以使用过程定义的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 从 HANA 过程中选择数据的更多详细信息,您可以参考给定的教程。

如果您的程序接受输入参数,则可以像参数化视图一样查询“带结果视图”创建的视图

于 2018-04-04T13:36:37.757 回答