我在Play for Scala中有以下代码来访问带有Hibernate的SAP Hana表.我需要用MySql实现相同的代码,但问题是MySql不支持序列(它适用于AUTO_INCREMENT列)和代码中断,因为我必须@SequenceGenerator
为Hana 指定.有没有办法编译这个代码,条件是排除@SequenceGenerator
注释,所以它同时适用于MySql和Hana?
@Entity
@Table(name = "clients")
class ClientJpa {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "generator")
@SequenceGenerator(name="generator", sequenceName = "cliSeq", allocationSize = 1)
var surrogateKey: Int = _
var code: String = _
var name: String = _
}
Run Code Online (Sandbox Code Playgroud) 如何在SAP HANA存储过程中返回插入或更新语句中受影响的行数?
在oracle中,我会使用sql%rowcount,但我在他们的文档中找不到HANA的等价物?
例如:
CREATE PROCEDURE procedure_name (p_input)
LANGUAGE SQLSCRIPT AS
BEGIN
define c integer;
insert into some_table values (somevalues);
c := sql%rowcount;
END
Run Code Online (Sandbox Code Playgroud)
更新:
我终于在SAP线程上找到了答案.您可以在插入或更新后运行此语句以获取rowcount:
SELECT ::ROWCOUNT into L_C FROM DUMMY;
Run Code Online (Sandbox Code Playgroud) 我们目前在连接到 SAP HANA 的 Python 连接器中使用基本身份验证。在我们当前的连接字符串中,我们使用 SQLAlchemy,它看起来像这样:
def get_engine(host_name):
return create_engine('hana://{user}:{password}@{host_name}:{port}/HUP'.format(
user=request.json['username'],
password=base64.b64decode(bytes(request.json['password'], encoding='utf-8')).decode('utf-8'),
host_name=host_name,
port=current_app.config['HANA_PORT']
)
)
Run Code Online (Sandbox Code Playgroud)
我们现在需要过渡到使用 HANA Oauth,因此不再需要在连接字符串中输入用户名和密码。理想情况下,应该有一种方法可以将 JWT 输入到连接详细信息中。我在网上找不到太多资源来真正说明如何使用 Oauth 的 HANA 创建基于 Python 的连接器。这里的任何帮助将不胜感激。
我使用Delphi/C++ Builder XE2.
我至少需要访问这些DBMS:
我需要在数据感知的可视控件中显示和编辑数据.数据可以驻留在任何这些DBMS上,我将在外部文本文件上配置连接属性和SQL语句.
所以我正在寻找一组支持这种DBMS的数据库访问组件,并且具有良好的性能,类似于旧的Paradox表.
BDE(Borland数据库引擎)(TDatabase
,TTable
...)
已过时.
DBX(Embarcadero dbExpress)(TSQLConnection
,TSQLTable
...)
替代BDE,单向数据集(光标变为只领先;在内存不缓冲数据,这样的数据集不能在一个DBGrid显示;使用dbExpress构建用户界面,你会需要使用两个部分:TDataSetProvider
和TClientDataSet
)
使用本机驱动程序(HANA没有)或ODBC.
FireDAC(Embarcadero Fire数据访问组件)(TADConnection
,TADTable
...)
它是AnyDAC的延续; 使用本机驱动程序(HANA没有)或ODBC或dbExpress.
UniDAC(Devart通用数据访问组件)
不自由; 使用本机驱动程序(HANA没有)或ODBC或"DB Client".
DA(Delphi的RemObjects 数据摘要)
不是免费的.
ZDBC(Zeos数据库连接接口)(TZConnection
,TZQuery
...)
开源; 从作为Object Pascal的JDBC端口开始; 不提供与数据感知视觉控件的绑定.
dbGo(Embarcadero dbGo)( …
我有下表:
CREATE column TABLE banks (
sk tinyint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
code varchar(10) DEFAULT NULL,
name varchar(100) DEFAULT NULL,
version smallint DEFAULT NULL,
PRIMARY KEY (sk)
);
Run Code Online (Sandbox Code Playgroud)
我尝试使用以下代码选择表的行(在Scala中):
import scala.collection.JavaConverters._
object Test extends App {
val session = HibernateUtil.sessionFactory.openSession
val q = session.createQuery("from BankHib ")
val list2 = q.list // <-- code breaks here
session.close
}
Run Code Online (Sandbox Code Playgroud)
使用以下实体定义:
@Entity
@Table(name = "banks")
class BankHib {
@Id
var sk: Int = _
var code: String = _
var …
Run Code Online (Sandbox Code Playgroud) 这听起来很奇怪的用例,但我想用一些数据更新日期列.请在下表中找到.我正在处理JSON格式的数据.
CityName | data1 | data2 | date
Mumbai | 1.234 | 2.3456| Sat Jan 20 2018 12:00:00 GMT+0000 (UTC)
Mumbai | 6.234 | 2.3456| Sat Jan 20 2018 18:00:00 GMT+0000 (UTC)
Mumbai | 1.234 | 2.3456| Sun Jan 21 2018 12:00:00 GMT+0000 (UTC)
Mumbai | 2.234 | 2.3456| Sun Jan 21 2018 18:00:00 GMT+0000 (UTC)
Mumbai | 1.234 | 2.3456| Sun Jan 21 2018 24:00:00 GMT+0000 (UTC)
Mumbai | 1.234 | 2.3456| Sun Jan 21 2018 00:00:00 GMT+0000 (UTC) …
Run Code Online (Sandbox Code Playgroud) 我正在尝试访问OData源提供程序,特别是SAP HANA通过Odata服务公开的分析视图.我在odata上应用了一个包含数字的过滤器,但是我收到的错误是因为支持使用该号码
"Operator 'eq' incompatible with operand types 'Edm.Decimal' and 'Edm.String'
Run Code Online (Sandbox Code Playgroud)
这是我访问资源的方式:
analyticView.xsodata/analyticView?$select=AMOUNT_SOLD,FAMILY_NAME&$filter=SALE_PRICE%20eq%20'323.7'&$format=json
Run Code Online (Sandbox Code Playgroud)
我还试图从号码中删除引号
analyticView.xsodata/analyticView?$select=AMOUNT_SOLD,FAMILY_NAME&$filter=SALE_PRICE%20eq%20323.7&$format=json
Run Code Online (Sandbox Code Playgroud)
但我收到这个错误:
"Operator 'eq' incompatible with operand types 'Edm.Decimal' and 'Edm.Double'."
Run Code Online (Sandbox Code Playgroud)
您能否查看问题是什么以及解决方法.
我们正在为我们的组织创建一个 web api。API 从 HANA 视图连接和检索数据。我指的是以下链接中提供的示例来建立连接
https://blogs.sap.com/2015/04/15/creating-ac-application-using-sap-hana-and-adonet/
由于 .Net Core 不允许直接引用 DLL,我们正在创建一个本地 nuget 包并引用它(https://docs.nuget.org/ndocs/create-packages/creating-a-package)
初始化 HanaConection 时出现以下错误:
{"版本不匹配:C:\Windows\assembly\GAC_MSIL\Sap.Data.Hana.v3.5\1.0.120.0__0326b8ea63db4bc4\Sap.Data.Hana.v3.5.dll (1.0.120.0), C:\Program Files\sap\hdbclient\libSQLDBCHDB.dll (1.00.112.00.1457615240).":"C:\Program Files\sap\hdbclient\libSQLDBCHDB.dll"}
在 SAP HANA 中,我习惯于创建计算视图。
之前我了解到计算视图(编译后是列视图)比数据库 SQL 视图更受欢迎。现在有了 CDS-Views,我不确定是否仍然如此。尤其是在性能方面。
现在表函数(取代脚本计算视图)和 CDS 视图之间的区别是什么?
我们的客户已将其系统更改为SAP,并希望应用程序通过SAP界面显示数据.我们决定使用SAPUI5框架+ WebIDE来开发应用程序,因为它提供了非常好的控件种类,具有可靠的MVC设计以及用于SAP界面的易于使用的云连接器.
我们已经配置了这样的连接器:
新app.json
{
"welcomeFile": "/webapp/index.html",
"routes": [
{
"path": "/resources",
"target": {
"type": "service",
"name": "sapui5",
"entryPath": "/resources"
},
"description": "SAPUI5 Resources"
},
{
"path": "/test-resources",
"target": {
"type": "service",
"name": "sapui5",
"entryPath": "/test-resources"
},
"description": "SAPUI5 Test Resources"
},
{
"path": "/mynews",
"target": {
"type": "destination",
"name": "MyNews_CMS",
"preferLocal": true
}
}
],
"sendWelcomeFileRedirect": true
}
Run Code Online (Sandbox Code Playgroud)
这是我们在component.js中的测试调用:
try {
$.get("/mynews/?json=2", function(data, status) {
alert("success: " + JSON.stringify(data));
}).fail(function(arg1) {
alert("error: " + JSON.stringify(arg1));
});
} …
Run Code Online (Sandbox Code Playgroud)