试了很久,procedure的odata直接执行貌似没办法更新
只有借用POST才可以更新
procedure的写法如下:
PROCEDURE "DEMO"."matinal.pro::zpro1" (
IN new "matinal.data::ztable2",
OUT error "matinal.data::error"
)
LANGUAGE SQLSCRIPT
SQL SECURITY INVOKER
DEFAULT SCHEMA DEMO
AS
BEGIN
/*****************************
Write your procedure logic
*****************************/
select MY_COL1, MY_COL2, MY_COL3 from :new;
error = select '0' as ERROR_ID, 'value as empty' as COMMENT from dummy;
INSERT INTO "DEMO"."matinal.data::ztable2"(MY_COL1, MY_COL2, MY_COL3) VALUES('1001',1,'test');
END;
Odata的写法如下:
service namespace "ztest" {
"matinal.views::zcal1" as "zcal1"
create using "matinal.pro::zpro1";
}
借助POST更新即可,否则不会更新。

本文探讨了在特定环境下使用Procedure进行OData更新时遇到的问题及解决方案。通过具体示例展示了Procedure的写法,并指出直接执行无法实现更新操作,而采用POST方法则可以成功更新。

804

被折叠的 条评论
为什么被折叠?



