从另一个传递过程表的PROCEDURE调用PROCEDURE

2020-08-23 01:55发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)嗨, 我们需要从主过程PROC...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

我们需要从主过程PROC_FATHER调用过程PROC_CHILD:此PROC_FATHER创建一个#temp表并将其传递给PROC_CHILD过程。 由于业务限制,PROC_CHILD必须包含DML命令,因此我们不能使用" select * from PROC_CHILD"来调用它:因此,我们通过OUT临时表在过程之间传递数据。

当我们从PROC_FATHER调用PROC_CHILD时,返回的结果始终为空,我们无法理解为什么...

这是一个演示我们问题的简单脚本:

 SET SCHEMA MY_SCHEMA;
 DROP TYPE MY_TABLE_DEF;
 CREATE TYPE MY_TABLE_DEF AS TABLE(" AAA" INT," BBB" INT," CCC" INT);

 DROP PROCEDURE PROC_CHILD;
 创建过程PROC_CHILD(我的MY_TABLE_DEF为MYRES)
 语言SQLSCRIPT SQL安全调用者为
 开始
   像MY_TABLE_DEF一样创建本地临时列表#TEMP;
   插入#TEMP VALUES(1,2,3);
   MYRES = SELECT * from #TEMP;
 结束;

 DROP PROCEDURE PROC_FATHER;
 建立程序PROC_FATHER
 语言SQLSCRIPT SQL安全调用者为
 开始
   创建本地临时列表#XYZ,如MY_TABLE_DEF;
   致电PROC_CHILD(MYRES => XYZ);
   选择*从#XYZ;
 结束;

 -总是在SQL控制台中返回空结果:我们该如何解决呢?
 致电PROC_FATHER; 

请帮助!

mdias

2条回答
DafaDDDa
2020-08-23 02:14 .采纳回答

实际上,在调用PROC_CHILD的PROC_FATHER过程中,您没有将MYRES的值"插入"创建的临时表#XYZ中。 而是创建(内部)表XYZ。

通过执行"父"过程,您可以访问数据而无需使用临时表(在这种情况下,这实际上不是必需的):

创建过程PROC_FATHER
 语言SQLSCRIPT SQL安全调用者为
 开始
   致电PROC_CHILD(MYRES => XYZ);
   选择* FROM:XYZ;
 END; 

一周热门 更多>