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条回答
Aaron 3364
2020-08-20 18:33

嗨,

对于那些在搜索临时表主题时落入此处的用户:本地临时表的此限制已在Hana的当前版本中修复,因此可以在存储过程中创建本地临时表。 应该在会话自动完成时删除它们,但是在过程结束时删除它们不会有任何伤害。 另外,请确保使用正确类型的临时表-基于行或列。 如果将这样的临时表与不同类型的持久化表结合使用,这将很重要。 由于不同的商店使用了不同的引擎,因此引擎之间的数据传输将影响大量数据的性能

史蒂夫,交易范围取决于您执行命令的方式。 您可以从应用程序启动交易。 然后,通过启动事务并提交或回滚来定义事务范围。

此外,每个无名存储过程在没有外部启动的事务触发时都有其自己的事务范围。 然后,调用堆栈顶部的存储过程将定义其范围。 所有嵌套的SP调用都将绑定到该事务。 我认为SQL Server的工作方式完全相同


Artem

一周热门 更多>