我是sap hana世界的新手。我试图使用存储过程来更新信息。我想发送一个自定义表格类型的字段名称,字段值和行ID。 我创造了这个类型:存储过程中的自定义表类型sap hana
CREATE TYPE t_field AS TABLE (
ID INTEGER,
FLD VARCHAR(100),
VAL VARCHAR(100));
而且我用它在此过程中:
PROCEDURE "_SYS_BIC"."Match.procedures::updateAnag" (
in tfield tt_field,
out error tt_error
)
LANGUAGE SQLSCRIPT
SQL SECURITY INVOKER
DEFAULT SCHEMA "_SYS_BIC"
AS
BEGIN
declare _id integer;
declare _field varchar(100);
declare _value varchar(100);
select ID, F_NAME, F_VALUE
into _id, _field, _value
from :tfield;
IF(_field = '' OR _value = '') THEN
error = SELECT 400 AS http_status_code,
'empty field' as error_message,
'All fields must be filled' as detail from dummy;
ELSE
IF (_field = 'name') THEN
UPDATE "_SYS_BIC"."TEST_TABLE"
SET NAME = _value
WHERE ID = _id;
END IF;
IF (_field = 'surname') THEN
UPDATE "_SYS_BIC"."TEST_TABLE"
SET SURNAME = _value
WHERE ID = _id;
END IF;
END IF;
END;
但是,当我尝试激活代码,日食返回我这个错误: “SAP-UI核心.js:159 2016-07-19 17:45:47.751550发生以下问题:HTTP请求失败400,错误请求,请求包含实体' anagType'中不存在的属性。 - '
有人可以帮助我解决它或让我更好的方法来做到这一点?
好吧,我想让你想要更新程序的'灵活',但这是一个笨拙的方式来做到这一点。使您的信息数据块显式化并使用列的1:1映射执行直接更新。可以手动检查空字段,也可以在表上将其保留为NOT NULL约束。 –
感谢您的帮助。在这篇文章中,最让我感兴趣的是理解为什么该过程不适用于自定义表格。这种方法是一个孤立的案例。 – Shiroga