我正在尝试将读/写存储过程的结果存储在本地临时表中。创建临时表后,我正在写 -
INSERT INTO #TMP call SPName;
将结果存储在临时表中,但它显示不支持功能。无论如何可以将存储过程的结果存储在临时表中。我不想更改已经构建的 SP 的定义,但想将结果存储在临时表中以与另一组语句连接以获得我的最终结果。
是否尝试使用输出表类型作为存储过程参数之一?然后在存储过程中使用该 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;
希望这有帮助。
可以使用过程定义的"包含结果视图">扩展。例如,如果我使用@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 ;
有关如何使用"通过结果视图"从 HANA 过程中选择数据的更多详细信息,可以参考给定的教程。
如果过程接受输入参数,则可以像查询参数视图一样查询由"带结果视图"创建的视图