私は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;
しかし、私は、コードをアクティブ化しようとすると、Eclipseは私にこのエラーが返されます。 「SAP-UI-コア.js:159 2016-07-19 17:45:47.751550次の問題が発生しました:HTTPリクエストfailed400、Bad Request、リクエストにエンティティɷ anagTypeɲに存在しないプロパティが含まれています。 - '
誰かが私にそれを修正したり、これを行うためのよりよい方法を教えてもらえますか?
[OK]をクリックして、更新手順で「柔軟性」を持たせたいと思いますが、これはやっかいな方法です。情報データブロックを明示的にし、列の1:1マッピングで直接更新を実行します。空のフィールドは、手動でチェックするか、テーブル上でNOT NULL制約にしておくことができます。 –
ご協力ありがとうございます。このポストでは、私が最も関心を持つのは、カスタムテーブルでこのプロシージャが動作しない理由を理解することです。このアプローチは孤立したケースです。 – Shiroga