測試條件
假設某公司總部在北京
北京的總部有一個集中的數據庫
在本地(新疆)的分公司也有一個數據庫
要將本地新疆的SIDXJ數據庫中訪問到北京的數據庫SIDBJ中的數據
也就是說
測試環境
建立環境時
執行SELECT * FROM GLOBAL_NAME;
北京的數據庫的GLOBAL_NAME為SIDBJ
新疆的數據庫的GLOBAL_NAME為SIDXJ
答
執行的結果如下
NAME TYPE VALUE
global_names boolean TRUE
表示該參數是true
該參數為true時
答
執行語句為
也可以執行select * from v$option where PARAMETER=
如何返回值為True
建立步驟
在北京的數據庫中
create table USERBJ
(
STU_ID NUMBER
STU_NAME VARCHAR
)
在其中增加一條記錄
insert into BJ_TEST (STU_ID
values (
下面開始創建連接到北京的遠程數據連接DBLink
create database link SIDBJ
其中
tns_xj_to_bj是本地建立的連接到北京的數據庫的服務名
select * from dual@SIDBJ
如果返回結果如下則表示連接成功了
DUMMY
X
SQL> select owner
OWNER OBJECT_NAME
SYSTEM SIDBJ
USERXJ DBLINK_XJ_TO_BJ
USERXJ SIDBJ
在新疆的數據庫中查詢北京的數據庫中表的信息
select * from bj_test@SIDBJ
查詢結果
STU_ID STU_NAME
表示查詢是正常的
create database link a connect to userbj identified by bj
建立了一個DBLINK
select owner
可以看到已經建立了名為
但執行下面的查詢
select * from bj_test@a
原因是因為本地數據庫的global_names的參數值為true
要修改本地數據庫的global_names參數為false;(注意是修改本地數據庫SIDXJ
使用下面的語句修改該參數
SQL> alter system set global_names=false;
再執行下面的幾步即可查詢出數據
create database link a connect to userbj identified by bj
select owner
select * from bj_test@a
CREATE OR REPLACE PROCEDURE test_cur
as
strSql
t_stu_name varchar
TYPE TCUR IS REF CURSOR;
CUR TCUR;
begin
strSql
OPEN CUR FOR strSql
LOOP
FETCH CUR INTO t_stu_name;
EXIT WHEN CUR%NOTFOUND;
DBMS_OUTPUT
END LOOP;
CLOSE CUR;
end test_cur;
測試存儲過程顯示
以上腳本全部在ORACLE
From:http://tw.wingwit.com/Article/program/Oracle/201311/18443.html