当您有多个模式时,如何在存储过程中使用模式映射?

How to use schema-mapping in a stored procedure when you have more than one schema?

我的 HANA 数据库上有一个存储过程,我需要在其中加入来自不同模式的两个 table。这些模式在开发、暂存和生产系统中的命名方式不同。

在这种情况下,显而易见的解决方案是使用 Schema-Mapping。但不幸的是,模式映射似乎只适用于存储过程的默认模式。当尝试在存储过程(例如 JOIN "AUTHORING_SCHEMA"."SOME_TABLE" ON ...)中引用创作模式时,您会收到错误消息 "invalid schema name"。因此,我似乎只能对 table 之一使用模式映射,但不能同时对两者使用。

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

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

我使用第二个模式作为默认模式创建了第二个存储过程。此过程只是 SELECT 读取第二个数据库的内容 table.

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

这相当有效,因为第二个 table 相当小(目前为 16 行,不太可能超过 100 行)。但我不想用更大的 table.

我会尝试通过使用 .hdbsynonym

定义两个同义词来解决此限制

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

在那里您还可以找到关于模式映射如何与 hdbsynonym 一起工作的描述。

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