線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1998
推到 Plurk!
推到 Facebook!

ORACLE Store Procedure 的物件參照問題

尚未結案
kyxiang
一般會員


發表:8
回覆:6
積分:2
註冊:2002-03-11

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-07-01 20:17:55 IP:211.78.xxx.xxx 未訂閱
請教各位先進:    我以 USER A 登入ORACLE, 在 SQL*PLUS 或 SQL WINDOW 均可正常查詢到建立在另一 USER B 之下的TABLE(select * from B.ORDER_TABLE where ORDER_ID='ORD001')     但是一樣的查詢 COMMAND 當我想要在 Store Procedure 中使用時, (ex. CURSOR TEST_cur IS         SELECT * FROM B.ORDER_TABLE where ORDER_ID='ORD001';   或      EXECUTE IMMEDIATE         'SELECT * FROM B.ORDER_TABLE where ORDER_ID=''ORD001'' '      INTO DATA_record)  卻出現錯誤 :    前者出現編譯錯誤 : PLS-00201:識別字'B.ORDER_TABLE'必須被宣告    後者出現執行時期錯誤: ORA-00942: 表格或視觀表不存在    我也嘗試在 USER A 底下建立一個 Snap Shot 去參照 B.ORDER_TABLE 可是還是一樣的結果    感覺似乎是雖然有 guarantee, USER A 可以 "直接" 參照到 USER B 的物件, 但是在 "USER A 的物件" 中, 卻還是無法參照 "USER B 的物件" 請問 ORACLE 有這樣的限制嗎? 還是我想錯了.. @@ 最重要的是, 這個問題我該如何解決?? 請各位大俠幫幫忙.. 感謝感謝~ :)
Mickey
版主


發表:77
回覆:1882
積分:1390
註冊:2002-12-11

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-07-02 13:42:35 IP:218.170.xxx.xxx 未訂閱
kyxiang 你好:    Oracle 9i , SQLPLUS 我試不出來...正常耶. 程序如下:    
1. Login user B.
2. grant select on SCHEMA_TBLS to A.
3. Login user A.
4. 
create or replace procedure TestProc
is
  indepent varchar(20);
  cursor  indepent_tbls is 
        select rtrim(TBL_NAME) from B.SCHEMA_TBLS 
        where TBL_NAME like 'SCHEMA%'
        order by TBL_NAME;
begin
    open indepent_tbls;
    loop
       fetch indepent_tbls into indepent;
       if not indepent_tbls%found then exit; end if;
       dbms_output.put_line(indepent);
    end loop;
    close indepent_tbls;
end TestProc;
/    set serveroutput on    execute testproc;
SCHEMA_COLS
SCHEMA_DEDC
SCHEMA_DMNS
SCHEMA_INDS
SCHEMA_RELS
SCHEMA_TBLS    PL/SQL 程序順利完成.    
系統時間:2024-07-02 23:31:23
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!