-1

HANA データベースにストアド プロシージャがあり、異なるスキーマの 2 つのテーブルを結合する必要があります。これらのスキーマは、開発、ステージング、および本番システムで異なる名前が付けられます。

この状況での明らかな解決策は、Schema-Mappingを使用することです。残念ながら、スキーマ マッピングは、ストアド プロシージャの既定のスキーマに対してのみ機能するようです。ストアド プロシージャ (例) でオーサリング スキーマを参照しようとすると、JOIN "AUTHORING_SCHEMA"."SOME_TABLE" ON ...「無効なスキーマ名」というエラー メッセージが表示されます。そのため、テーブルの 1 つだけにスキーマ マッピングを使用でき、両方には使用できないようです。

table にクエリを実行することでストアド プロシージャのスキーマ マッピングを読み取ることができることはわかって"_SYS_BI"."M_SCHEMA_MAPPING"いますが、変数にスキーマ名がある場合、スキーマからクエリを実行する方法がわかりません。

4

2 に答える 2

2

.hdbsynonym を使用して 2 つの同義語を定義することで、この制限を回避しようとします。

.hdbsynonym を使用して設計時のシノニムを作成する方法の詳細については、https://help.sap.com/saphelp_hanaplatform/helpdata/en/52/78b5979128444cb6fffe0f8c2bf1e3/content.htmおよび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/を参照してください。

于 2016-12-31T17:24:21.950 に答える
0

私は完全に満足しているわけではありませんが、今のところうまくいく回避策でこれを解決しました。

2 番目のスキーマを既定のスキーマとして、2 番目のストアド プロシージャを作成しました。このプロシージャはSELECT、2 番目のデータベース テーブルの内容を ing するだけです。

最初のストアド プロシージャは、2 番目のストアド プロシージャを呼び出してデータをローカル テーブル変数にロードしJOIN、最初のデータベース テーブルとテーブル変数の間で を実行します。

2 番目のテーブルはかなり小さい (現時点では 16 行で、100 行を超える可能性は低い) ため、これはかなりうまく機能します。しかし、私は大きなテーブルでそれをしたくありません。

于 2016-12-30T11:22:41.750 に答える