-1

我的 HANA 数据库上有一个存储过程,我需要在其中连接来自不同模式的两个表。这些模式在开发、登台和生产系统中的名称不同。

在这种情况下,显而易见的解决方案是使用Schema-Mapping。但不幸的是,模式映射似乎只适用于存储过程的默认模式。当尝试在存储过程(例如JOIN "AUTHORING_SCHEMA"."SOME_TABLE" ON ...)中引用创作模式时,您会收到错误消息“无效的模式名称”。所以看起来我只能对其中一个表使用模式映射,但不能同时对这两个表使用。

我知道我可以通过查询表来读取存储过程中的模式映射"_SYS_BI"."M_SCHEMA_MAPPING",但是当我在变量中有模式名称时,我无法找到如何从模式中查询。

4

2 回答 2

2

我会尝试通过使用 .hdbsynonym 定义两个同义词来解决这个限制

有关如何使用 .hdbsynonym 创建设计时同义词的详细信息,请查看https://help.sap.com/saphelp_hanaplatform/helpdata/en/52/78b5979128444cb6fffe0f8c2bf1e3/content.htmhttps://help.sap.com/saphelp_hanaplatform/helpdata /en/4c/94a9b68b434d26af6d878e5f51b2aa/content.htm

在那里,您还可以找到有关模式映射如何与 hdbsynonym 一起使用的描述。

有关一般同义词的详细信息,请参阅https://blogs.sap.com/2016/12/05/using-synonyms-in-sap-hana/

于 2016-12-31T17:24:21.950 回答
0

我用一种我不完全满意但目前有效的解决方法解决了这个问题。

我创建了第二个存储过程,将第二个模式作为默认模式。SELECT这个过程除了读取第二个数据库表的内容之外什么也不做。

第一个存储过程调用第二个存储过程将数据加载到本地表变量中,然后JOIN在第一个数据库表和表变量之间执行。

这工作得相当好,因为第二个表相当小(目前 16 行,不太可能超过 100)。但我不想用更大的桌子来做。

于 2016-12-30T11:22:41.750 回答