create synonym PUBLIC.substring for substring@sqlserver
同義詞創建完成後,我們就可以直接調用同義詞了,sql引擎會自動做轉換:
存儲過程
存儲過程是sql腳本程序塊。我們也可以使用存儲過程來實現上面同義詞的功能,創建sql腳本如下:
create procedure substring(p_str,p_start,p_count) as
substring@sqlserver(p_str,p_start,p_count);
下面我們來使用我們的存儲過程
select substring(''hgsql'',2,2) proc
使用存儲過程,可以實現更為復雜的邏輯控制,下面我們對p_start的參數做一個校驗,sql腳本如下:
create or replace procedure substring(p_str,p_start,p_count) as
begin
if p_start is null then
raise ''p_start is null'';
end if;
substring@sqlserver(p_str,p_start,p_count);
end
當我們調用substring函數對參數p_start傳入空值時,會拋出如下錯誤提示:
mal; FONT-SIZE: 12pt; LINE-HEIGHT: 173%">目錄
連接到各種數據庫,我們能夠很容易的將表引入,進行調用,但我們在調用時必須知道模式,其實也就是要知道所屬數據庫,雖然我們可以使用同義詞進行虛擬化,但靈活性還是非常有限。目錄就是解決深度虛擬化的好工具。
我們創建一個mytable目錄,如下:
create directory //mytable
創建完成目錄,我們就可以添加目錄項了,sql如下:
alter directory //mytable add item ora_emp for Oracle.emp;
alter directory //mytable add item ora_sql_emp for v_ora_sql_emp;
alter directory //mytable add item ora_tab for user_tables@Oracle;
alter directory //mytable add item sql_emp for sqlserver.emp;
下面我們直接通過目錄進行對象訪問:
select * from //mytable/ora_sql_emp
dn_net/sqlhub/683dcc492549467fa7cabd8999446513.png" />