ORACLE Store Procedure 的物件參照問題 |
尚未結案
|
kyxiang
一般會員 ![]() ![]() 發表:8 回覆:6 積分:2 註冊:2002-03-11 發送簡訊給我 |
請教各位先進: 我以 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 發送簡訊給我 |
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 程序順利完成. |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |