HANA程序中的本地临时表

2020-08-20 17:57发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)专家们, 我对临时表洞察SA...

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

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


专家们,

我对临时表洞察SAP HANA程序有疑问。 如果我以以下方式使用本地SQL编辑器,那么它将起作用:

创建本地临时表#test_table(mandt VARCHAR(3),type_id VARCHAR(4));

插入#test_table值('001','Dum');
插入# test_table值('002','Dum2');

SELECT
mandt,
type_id
从#test_table
mandt ='001';

但是现在我想对具有编辑权限的过程使用相同的见解。 所以我写下了以下内容:

创建过程" _SYS_BIC"。" d052319/DEMO_PROC"(在MANDT VARCHAR(3)中,
在OUTPUT_TABLE" _SYS_BIC"中。" d052319/DEMO_PROC/tabletype/OUTPUT_TABLE")

语言SQLSCRIPT sql安全定义程序为

/*********开始过程脚本************/
开始

创建本地临时表#test_table(mandt VARCHAR(3),type_id VARCHAR(4));

插入#test_table值(mandt,'Dum1');
插入#test_table值 ('002','Dum2');

output_table =
SELECT
mandt,
type_id
从#test_table
哪里mandt = mandt;

END
;

但是通过执行,我得到了表#test_table不存在的错误。 如果您在过程中创建表并尝试直接访问它们,也会发生同样的事情。 但是有没有可能说在前面的行中使用创建的表?

如果需要更多详细信息,则错误消息为:

无法执行'创建过程" _SYS_BIC"。" d052319/DEMO_PROC"(在MANDT VARCHAR(3)中,在OUTPUT_TABLE中......

SAP DBTech JDBC:[259](在353):无效的表名:在模式D052319中找不到表/视图#TEST_TABLE:第9行第15列(在pos 353)

致以最诚挚的问候,并感谢所有对您有帮助的人,

马丁

5条回答
huskylover
2020-08-20 18:37 .采纳回答

嗨,马丁,


对此做了一些测试。 结论是您不能在过程中使用本地临时表-不支持此操作。 如果这样做,您将面临以下问题:

a。 在当前会话中-您只能调用该过程一次。 当您再次调用它时,它将错误,因为该表已存在并且无法再次创建。 您可以通过在create语句之前放置drop语句来解决此问题,但是最终会遇到问题(b)。

b。 在下一个会话中-您将无法调用该过程,因为drop语句将失败,因为此时临时表将不存在。

您可以改用全局临时表 (只有元数据是持久的)或普通表(元数据和数据都是持久的)。

您既可以在过程外部创建全局临时表,也可以在内部插入语句,或者在内部使用"创建" 之前带有" drop table"语句,这样您就不会在第二次调用该过程时出错。

希望有帮助。

谢谢

< p> Anooj

一周热门 更多>