我是SAP HANA的新手,并试图通过webbrowser使用以下网址公开.xsjs文件数据:
hostname:80<instance#>/workspace/session/a00/data/services/retrieveData.xsjs
但是,当我尝试访问它时,我收到以下错误:
此链接似乎已损坏我们无法找到您尝试访问的资源。它可能拼写错误或目前不可用
这些是我在项目资源管理器中创建的文件:
MYSCHEMA.hdbschema
schema_name="MYSCHEMA"
trendsData.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";
retrieveData.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);
所有上述文件都已成功提交并激活,但没有任何错误。然而,错误发生在webrowser中。
答案 0 :(得分:1)
您确定您在浏览器中输入的网址是否已正确构建?
网址应按以下方式构建:
服务器:端口/则repository_path / FILE_NAME
错误的路径可能会导致您的问题。请参阅以下示例:
主持人:hanacloud
端口:8000(80 + instance_number)
SAP HANA存储库树:
mdo - &gt;
sap - &gt;
sflight - &gt;
测试 - &gt;
test.xsjs
网址: hanacloud:8000 / mdo / sap / sflight / test / test.xsjs
答案 1 :(得分:1)
您的端口号应为8000而不是80,并确保网络上没有阻止,这通常是个案,特别是在办公室网络中
答案 2 :(得分:0)
您的select语句未指定架构。另外,表的目录名通常是“package name :: table name”。此外,您的表定义有两列具有相同的名称和无效的主键规范。
因此我希望选择失败。作为第一步,我建议尝试
$.response.contentType = "text/plain";
$.response.setBody('hello world');
$.response.status = $.net.http.OK;
一旦运行,您就会知道Web访问是有效的。我的下一步是将所有内容包装成一些try / catch,如此
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");
这样就可以确定代码的确切位置。
答案 3 :(得分:0)
请确保存在.xsaccess和.xsapp文件以及语法。还要忍受文件被激活。