Ошибка при попытке вызвать хранимую процедуру SAP HANA со стороны службы - PullRequest
0 голосов
/ 06 мая 2020

Я пытаюсь вызвать процедуру SAP HANA hdb со стороны моей службы, используя приведенный ниже код.

var con = ConLib.getHDBConnection();
var uploadStmt = con.loadProcedure("_SYS_BIC" , "procname");
var result = uploadStmt("samplefield1",  "samplefield2", {"DATA":[{"id1":"id_1001","id2":"id_2001","year_col":"2018"}, {"id1":"id_1002","id2":"id_2002","year_col":"2019"}]})

Процедура принимает в качестве входных данных указанные ниже параметры.

PROCEDURE procname (
IN field1 VARCHAR(100),
IN field2 VARCHAR(100)
IN in_table_data "schema_name"."hdbdd_file_name.table_type"
){}

Определена in_table_data как показано ниже в файле hdbdd_file_name.hd bdd.

Type table_type {
id1 : String(100);
id2 : String(100);
year_col : String(4);}

Я получаю ошибку ниже, когда вызываю процедуру со стороны моей службы.

" Error occured in processRequest method $.hdb.Connection.executeProcedure: Parameter at  position 3 is not of type that can be processed "

Не могли бы вы предложить, что нужно необходимо изменить либо на стороне БД, либо на стороне службы, чтобы исправить эту проблему.

Заранее благодарим.

1 Ответ

0 голосов
/ 07 мая 2020

У меня сложилось впечатление, что определение массива в вашем вызывающем операторе неверно:

var result = uploadStmt("samplefield1", "samplefield2", {"DATA":[{"id1":"id_1001","id2":"id_2001","year_col":"2018"}, {"id1":"id_1002","id2":"id_2002","year_col":"2019"}]})

вместо этого попробуйте следующее:

var result = uploadStmt("samplefield1"
                      , "samplefield2"
            , [{id1: 'id_1001', id2: 'id_2001', year_col: '2018'}
             , {id1: 'id_1002', id2: 'id_2002', year_col: '2019'}]
                       )
...