我有一个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]列名无效
我该如何解决?
答案 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||'''
前两个撇号用于转义,因此我们可以对查询说该值是一个字符串,最后一个撇号用于将值连接到查询字符串的其余部分。这三个撇号必须在它们之间没有空格。