计算视图中存储过程的用法

2020-08-31 23:30发布

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

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


嗨,专家


我已经使用SQL Console在HANA中创建了一个非只读过程,但是当我尝试在计算视图中使用它时,仍然收到一个错误消息,它是只读过程。 我没有在过程中编写" READS SQL DATA As",因此它应该是一个读/写过程。 您能帮我其他办法吗?



代码:

创建过程" MYSCHEMA" .PROCEDURE_TEST()

语言sql脚本为

开始

DECLARE tname varchar(50);

将" TABLE_NAME"从" MYSCHEMA"中选择为tname。" TEST_TABLE" WHERE ID ='5';

立即执行('select'||'*'||'from'|| tname);

END;

在计算视图中:

EXEC'呼叫" MYSCHEMA" .PROCEDURE_TEST();

呼叫" MYSCHEMA"。" PROCEDURE_TEST"(变量);

两者都尝试过,但是两种语法都出现错误:

"只读过程/功能不支持非只读过程/功能的呼叫"

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

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


嗨,专家


我已经使用SQL Console在HANA中创建了一个非只读过程,但是当我尝试在计算视图中使用它时,仍然收到一个错误消息,它是只读过程。 我没有在过程中编写" READS SQL DATA As",因此它应该是一个读/写过程。 您能帮我其他办法吗?



代码:

创建过程" MYSCHEMA" .PROCEDURE_TEST()

语言sql脚本为

开始

DECLARE tname varchar(50);

将" TABLE_NAME"从" MYSCHEMA"中选择为tname。" TEST_TABLE" WHERE ID ='5';

立即执行('select'||'*'||'from'|| tname);

END;

在计算视图中:

EXEC'呼叫" MYSCHEMA" .PROCEDURE_TEST();

呼叫" MYSCHEMA"。" PROCEDURE_TEST"(变量);

两者都尝试过,但是两种语法都出现错误:

"只读过程/功能不支持非只读过程/功能的呼叫"

付费偷看设置
发送
5条回答
一只江湖小虾
1楼-- · 2020-09-01 00:01

该错误表明您无法从只读过程("计算视图"默认为只读)调用非只读过程(PROCEDURE_TEST)。

这在逻辑上很合理-只读过程显然应该只读取数据,这是基本定义。 这个想法是,只读过程的执行不得更改系统中的任何数据。 现在,如果它具有调用非只读过程的功能,那么上述定义将完全无效。 术语"只读"变得毫无意义。

因此,基本上,系统仅允许您从另一个只读过程中调用一个只读过程。 相反,请将PROCEDURE_TEST重写为只读过程。

bbpeas
2楼-- · 2020-08-31 23:50

如果我们无法在计算视图下使用存储过程,那么SAP HANA中存储过程的用途是什么。

吹牛啤
3楼-- · 2020-08-31 23:57

此消息已被审核。

Tong__Ming
4楼-- · 2020-08-31 23:51

您能否更详细地说明您的要求? 可能有不同的方法来实现它。

Violet凡
5楼-- · 2020-08-31 23:55
嗨乔兹纳,
 您可以通过创建HANA表功能来满足您的要求。 可以通过添加投影或聚合节点从"计算"视图中调用表函数。 您可以
 在函数中编写SQL语句。
 主要,HANA存储过程用于DML(插入/更新/删除)
 操作。

 问候
 Kedar 

一周热门 更多>