2017-11-09 4 views
0

데이터베이스 연결 뷰에서 저장 프로 시저를 많이 사용하고 있습니다.dblink에서 오라클보기를 사용할 수 있는지 확인하십시오.

모든 절차를 실행하기 전에 뷰를 사용할 수 있는지 확인하여 객체 지향 프로그래밍 방식으로 check() 함수를 만들었는지 확인하고 싶습니다.

이제 만들 수 있습니다. if (checked() = 1) then ..work .. else null; 끝이다; 나는 몇 가지 테스트 후 체크 쿼리를 작성했습니다

create or replace FUNCTION CHECK_MYVIEW RETURN NUMBER IS 
CHECKED NUMBER; 
BEGIN 

    BEGIN 

    select 1 
    into CHECKED 
    from MYVIEW 
    where rownum = 1 
    ; 

    EXCEPTION WHEN OTHERS THEN 
    CHECKED:=0; 
    END; 

    RETURN CHECKED; 

END CHECK_MYVIEW; 

그 결과는 괜찮 :

기능입니다. 이 종류의 select를 사용하면보기에 레코드가 있는지 여부와 원격 데이터베이스에 연결 문제가 있는지 여부를 알 수 있습니다. 그러나 이것은 내 자신의 솔루션입니다.

같은 기능을 얻으려면 최적화 된 Oracle 쿼리가 있습니까? 예외의 인상없이 작동하지 않는 예외의 모든 종류의 ...

답변

0

당신은 메타 데이터 확인을 시도 할 수 있습니다 : 나는 그것이 존재한다는 것을 알고

DECLARE 
    checked INT; 
BEGIN 

    SELECT COUNT(*) 
    INTO checked 
    FROM [email protected] 
    WHERE name = 'xxx' 
    AND owner = 'yyy'; 

    --checked 0 -- not exists, 1 - exists 

END; 
+0

, 나는 그것이 –

+0

을 일하고 있는지 알고 싶어 @ JapJap 그래서 그냥 해봐? – lad2025

관련 문제