У меня есть процедуры SAP HANA для обновления таблицы. Я пытаюсь создать динамический SQL-запрос, это мой пример:Запрос динамического обновления с параметрами в процедурах SAP HANA
declare _field varchar(100) := 'NAME';
declare _name varchar(100) := 'david';
declare _id integer := 1;
DECLARE SQL_STR VARCHAR(3000);
SQL_STR := 'UPDATE "_SYS_BIC"."TEST_TABLE" SET "'||_field||'" = '||_name||' WHERE "ID" = '||:_id;
EXECUTE IMMEDIATE (:SQL_STR);
Но в консоли у меня есть эта ошибка:
Service exception: [260] invalid column name
Как я могу это исправить?
Хотя вы исправили ошибку синтаксиса, имейте в виду, что подход, который вы здесь делаете, действительно «сверх» - гибкий и общий вид в коде SQL, написанный программистами, используемыми для работы на других языках. Среди многих недостатков такого подхода: код имеет «невидимые» зависимости от вашей модели данных, операторы не могут быть проверены во время компиляции, есть большое изменение SQL-инъекции, SQL-кеш будет затоплен одноразовыми операциями. .. Вместо этого скорее создайте конкретные процедуры, которые работают с определенными объектами в вашей базе данных. –
Я знаю о большой проблеме этого подхода, но по многим причинам, в этом случае, я должен выбрать этот путь. Большое спасибо за вашу помощь! – Shiroga