SAP HANA 过程中带参数的动态更新查询
Dynamic update query with parameters in SAP HANA procedures
我有一个 SAP HANA 程序要更新一个 table。我正在尝试创建动态 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);
但是在控制台中我有这个错误:
Service exception: [260] invalid column name
我该如何解决?
我找到了修复它的正确语法
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);
如果我必须设置列或 table 名称,正确的语法是
"'||_field||'"
要设置字符串值,语法是 '''||_name||'''
前两个撇号用于转义,因此我们可以对查询说该值是一个字符串,最后一个撇号用于连接值到查询字符串的其余部分。三个撇号之间必须没有空格。
我有一个 SAP HANA 程序要更新一个 table。我正在尝试创建动态 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);
但是在控制台中我有这个错误:
Service exception: [260] invalid column name
我该如何解决?
我找到了修复它的正确语法
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);
如果我必须设置列或 table 名称,正确的语法是
"'||_field||'"
要设置字符串值,语法是 '''||_name||'''
前两个撇号用于转义,因此我们可以对查询说该值是一个字符串,最后一个撇号用于连接值到查询字符串的其余部分。三个撇号之间必须没有空格。