ORACLE 저장 프로시저 호출 사용자 정의 함수

1591 단어 Oacle
저장 과정 을 쓸 때 임시 표 조직 데 이 터 를 자주 만 들 고 임시 표를 만 들 때 이 표 가 이미 존재 하 는 지 판단 해 야 합 니 다.
 V_SQL:='CREATE TABLE BI_ZJ_ZJGJ(
            ZHZBH VARCHAR2(20),
            ZHZMC VARCHAR2(50),
            DWBH VARCHAR2(20),
            DWMC VARCHAR2(100),
            ZHNM VARCHAR2(50),
            ZHMC VARCHAR2(200),
            HBZJ NUMBER(20,8),
            YGJZJ NUMBER(20,8),
            GJL NUMBER(20,8)
            )';

    SELECT COUNT(1) INTO V_FLAG FROM USER_TABLES WHERE TABLE_NAME='BI_ZJ_ZJGJ';
    IF V_FLAG=0 THEN
       EXECUTE IMMEDIATE V_SQL;
    ELSE
       EXECUTE IMMEDIATE 'DROP TABLE BI_ZJ_ZJGJ';
       EXECUTE IMMEDIATE V_SQL;
    END IF;

저장 과정 에서 여러 장의 임시 표를 사용 할 때 이 코드 를 여러 번 반복 해서 붙 여야 합 니 다. 그런데 왜 임시 표를 만 드 는 문 구 를 독립 적 으로 함수 로 만 들 지 않 고 저장 과정 에서 호출 합 니까?
그래서 BI 를 만 듭 니 다.TEMP_TAB 의 함수, 건 표 문 V 수신SQL 과 표 명 VNAME, 임시 테이블 생 성 에 성 공 했 음 을 나타 내 는 불 값 을 되 돌려 줍 니 다.
CREATE OR REPLACE FUNCTION BI_TEMP_TAB(V_SQL VARCHAR2,V_NAME VARCHAR2)
       RETURN BOOLEAN
AS
       V_FLAG VARCHAR(10);
       V_OK BOOLEAN;
BEGIN
       SELECT COUNT(1) INTO V_FLAG FROM USER_TABLES WHERE TABLE_NAME=V_NAME;
       V_OK:=True;
              IF V_FLAG=0 THEN
                 EXECUTE IMMEDIATE V_SQL;
                 RETURN V_OK;
              ELSE
                 EXECUTE IMMEDIATE 'DROP TABLE '||V_NAME;
                 EXECUTE IMMEDIATE V_SQL;
                 RETURN V_OK;
               END IF;
END;

저장 과정 에서 임시 표를 만들어 야 할 때 이 함 수 를 직접 호출 합 니 다.
4. 567913. 이렇게 하면 임시 표 의 생 성 과정 을 간소화 했다.

좋은 웹페이지 즐겨찾기