我试图将读/写存储过程的结果存储在本地临时表中。创建临时表后我正在写 -
INSERT INTO #TMP call SPName;
将结果存储在临时表中,但表示不支持功能。无论如何都存储临时表中的存储过程的结果。我不想改变已构建SP的定义,但希望将结果存储在临时表中以与另一组语句连接以获得我的最终结果。
答案 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”创建的视图