![](/img/trans.png)
[英]SAP HANA: Is there a way to define schema and table name as input parameters of a procedure?
[英]custom table type in stored procedure sap hana
我是 sap hana 世界的新手。 我正在尝试使用存储过程来更新信息。 我想发送带有字段名称、字段值和行 ID 的自定义表类型。 我创建了这种类型:
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;
但是当我尝试激活代码时,eclipse 返回给我这个错误:'sap-ui-core.js:159 2016-07-19 17:45:47.751550 出现以下问题:HTTP request failed400,Bad Request,Request contains properties实体“anagType”中不存在的。 ——'
有人可以帮我修复它或向我展示更好的方法吗?
好吧,从 SQLSCript 代码的角度来看,我想说的一个问题是,当您使用变量(如 _value 或 _id)时,需要在它们前面加上冒号:
CREATE 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;
另一个问题是您没有在 IF 语句的第二个分支中初始化表变量错误。
虽然不太确定,这一切与您的错误消息有什么关系。 您可能希望首先自行调用和测试该过程,然后查看与 xsjs 页面的连接为何无法正常工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.