为什么xsjs不允许使用小写的表名?

时间:2017-08-17 13:31:16

标签: javascript hana

我有以下代码。

var table "ZNAme";

var connection = $.db.getConnection();
var query;

try{
    query = 'DROP TABLE MYSCHEMA.' + table;
    var drop = connection.prepareStatement(query);
    drop.execute();

   }catch(e){
       $.response.setBody(e.message);
}

The problem is that when I run it it gives me an error saying it can't find the table "ZNAME". For some reason it changes all the chars to upper case. However I'm creating this table also using xsjs and it works fine. I'm able to create the table, add data to it and read the data from it. The only thing I can't do is remove it. It only works if all chars are upper case. Can someone explain to me why this is going on?

var table "ZNAme";

var connection = $.db.getConnection();
var query;

try{
    query = 'DROP TABLE MYSCHEMA.' + table;
    var drop = connection.prepareStatement(query);
    drop.execute();

   }catch(e){
       $.response.setBody(e.message);
}

问题是,当我运行它时,它会给我一个错误,说它无法找到表格" ZNAME"。由于某种原因,它将所有字符更改为大写。但是,我也使用xsjs创建此表,它可以找到。我能够创建表,向其添加数据并从中读取数据。我唯一能做的就是删除它。有人可以向我解释为什么会这样吗?

1 个答案:

答案 0 :(得分:1)

您可以使用带小写字母的对象名称,将它们放在双引号("<object name here>")中。

因此,您的代码可以像这样更改

query = 'DROP TABLE MYSCHEMA."' + table + '"';

工作。

您可以在HANA文档和开发人员指南中的许多代码示例中找到此解释。

还请确保您的代码不受SQL注入威胁的影响。您绝对需要确保您的table字符串仅包含表名而不包含其他SQL命令。 more on that here