1

我是 SAP HANA 的新手,并试图通过具有以下 url 的 web 浏览器公开 .xsjs 文件数据:

hostname:80<instance#>/workspace/session/a00/data/services/retrieveData.xsjs

但是,当我尝试访问它时出现以下错误:

此链接似乎已损坏 我们找不到您要访问的资源。它可能拼写错误或当前不可用

这些是我在项目资源管理器中创建的文件:

MYSCHEMA.hdbschema

schema_name="MYSCHEMA"

趋势数据.hdbtable

table.schemaName = "MYSCHEMA";                                                           
table.tableType = COLUMNSTORE;   
table.description = "NewDataSet Order trendsData";

table.columns = [


       {name= "C";   sqlType = NVARCHAR; nullable = true; length=10; },
       {name= "D";   sqlType = VARCHAR;  nullable = true; length=5;  },
       {name= "DU";  sqlType = NVARCHAR; nullable = true; length=20; },
       {name= "SA";  sqlType = DECIMAL;  nullable = true; length=30; },
       {name= "I";   sqlType = DECIMAL;  nullable = true; length=30; },
       {name= "G";   sqlType = DECIMAL;  nullable = true; length=30; },
       {name= "G";   sqlType = DECIMAL;  nullable = true; length=20; },
       {name= "STR"; sqlType = DECIMAL;  nullable = true; length=30; }
        ];
 table.primaryKey.pkcolumns = ["INVENTORY"];

orderId.hdbsequence

schema="MYSCHEMA";     
start_with=2000000;
cycles=false;    
depends_on_table="workspace.session.a00.data::trendData";

检索数据.xsjs

$.response.contentType="text/html";                                                                    
var output = "Helloworld";                                                                                
var conn  = $.db.getConnection();

var pstmt = conn.prepareStatement("select * from trendData");

var rs    = pstmt.executeQuery();

if (!rs.next())                                                                                   
{
    $.response.setBody( "Failed to retrieve data");
    $.response.status = $.net.http.INTERNAL_SERVER_ERROR;
}

else                                                                                        
{                                                                                            
output=output + "This is the respose from my SQL: "                                                     
+ rs.getString(1);                                                                                
}                                                                                         
rs.close();                                                                                   
pstmt.close();                                                                          
conn.close();                                                                 
$.response.setBody(output);

以上所有文件均已成功提交并激活,没有任何错误。尽管如此,错误仍然发生在网络浏览器中。

4

4 回答 4

1

您确定您在浏览器中输入的 URL 是正确构建的吗?

URL 应按以下方式构建:

服务器:端口/repository_path/file_name

错误的路径可能会导致您的问题。请看下面的例子:

主机:hanacloud
端口:8000(80 + instance_number)

SAP HANA 存储库树
mdo ->
            sap ->
                       sflight ->
                                      test ->
                                                  test.xsjs

网址:hanacloud:8000/mdo/sap/sflight/test/test.xsjs

于 2013-08-08T14:01:51.747 回答
1

您的端口号应该是 8000 而不是 80 并确保在网络上没有被阻止,这通常是这种情况,尤其是在办公网络中

于 2013-08-09T20:05:46.323 回答
0

您的 select 语句未指定架构。另外表的目录名通常是“包名::表名”。此外,您的表定义有两列具有相同的名称和无效的主键规范。

因此,我希望选择失败。作为第一步,我建议尝试

$.response.contentType = "text/plain";
$.response.setBody('hello world');
$.response.status = $.net.http.OK;

一旦你开始运行,你就知道网络访问是有效的。我的下一步是将所有内容包装成这样的尝试/捕获

var eString = "";
try {

    //*
      * your code goes here
      *//

    return;  // do not forget this!
} catch (e) {
    eString = "\nException.toString(): " + e.toString() + "\n";
    var prop = "";
    for (prop in e) {
        eString += prop + ": " + e[prop] + "\n";

    response.status = $.net.http.INTERNAL_SERVER_ERROR;
    response.contentType = "plain/text";
    response.setBody(eString);
    return;
}

response.status = $.net.http.INTERNAL_SERVER_ERROR;
response.contentType = "plain/text";
response.setBody("something went badly wrong");

然后,这将允许查明您的代码到底在哪里失败。

于 2013-09-02T12:29:14.803 回答
0

请确保存在 .xsaccess 和 .xsapp 文件以及语法。还要忍受文件被激活。

于 2015-05-10T20:46:58.040 回答