我正在尝试将我的读/写存储过程的结果存储在本地临时表中。创建临时表后,我正在写 -
INSERT INTO #TMP call SPName;
将结果存储在临时表中,但它说功能不支持。无论如何将存储过程的结果存储在临时表中。我不想更改已经构建的 SP 的定义,但想将结果存储在临时表中以加入另一组语句以获得最终结果。
我正在尝试将我的读/写存储过程的结果存储在本地临时表中。创建临时表后,我正在写 -
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;
希望这可以帮助。
您可以使用过程定义的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 过程中选择数据的更多详细信息,您可以参考给定的教程。
如果您的程序接受输入参数,则可以像参数化视图一样查询“带结果视图”创建的视图