SAP HANA过程中带参数的动态更新查询

时间:2016-07-20 08:40:42

标签: sql stored-procedures sap hana dynamicquery

我有一个SAP HANA程序来更新表格。我试图创建一个动态的SQL查询,这是我的例子:

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);

但是在控制台中我有这个错误:

  

服务异常:[260]列名无效

我该如何解决?

1 个答案:

答案 0 :(得分:1)

我找到了正确的语法来解决它

declare _id integer := 1; 
declare _name varchar(100) := 'david';
declare _field varchar(100) := 'NAME';
DECLARE SQL_STR VARCHAR(3000);

SQL_STR := 'UPDATE "_SYS_BIC"."TEST_TABLE" SET "'||_field||'" = '''||_name||''' WHERE "ID" = '||_id;
EXECUTE IMMEDIATE (:SQL_STR);

如果我必须设置列或表名,则正确的语法是  "'||_field||'"

要设置字符串值,语法为'''||_name||'''前两个撇号用于转义,因此我们可以对查询说该值是一个字符串,最后一个撇号用于将值连接到查询字符串的其余部分。这三个撇号必须在它们之间没有空格。