2

スキーマAにテーブル'test'があり、スキーマBIからテストクエリを実行したいと考えています。そのため、A.testへのDBlinkとdblink名'dbl_test'を作成しました。

今、私はとしてクエリすることができます

select * from test@dbl_test;

しかし、TYPE v_id IS TABLE OF test@dbl_test.id%TYPE;カーソルを使用してplsqlプロシージャブロックで使用しようとすると、宣言する必要があるエラーが発生し、dbl_testは別のデータベースであり、アクセスできません。

selectステートメントを照会すると、それが機能しているのはなぜTYPEではないのですか?

4

2 に答える 2

3

の前に列を置きます@:

TYPE v_id IS TABLE OF test.id@dbl_test%TYPE;
于 2013-03-21T18:57:23.247 に答える
1

データベース リンクは、スキーマではなく2 つのデータベースをリンクするために使用されます。

あなたの場合、データベース リンクが本当に必要かどうかは不明です。2 つのスキーマは同じデータベースにありますか? そうであれば、スキーマ B に関連する権限を与えるだけで、彼はスキーマ A のデータ型を参照できるようになります。GRANT SELECT ON A.TEST TO Bそのデータ型を参照するには十分だと思います。

編集:実際にはリモートデータ型を参照することが可能です(知りませんでした!)@ jonearles' answerを参照してください。

于 2013-03-21T17:17:04.460 に答える