oracle 저장 프로세스 변수의 성명과 값 부여 3가지 방식

3199 단어

oracle 저장 프로세스 변수의 성명과 값 부여 3가지 방식
CreationTime - 2018년 8월 31일 16시 00분
Author:Marydon
1. 변수를 성명하는 3가지 방식
데이터 형식의 성명 방식에 따라 구분하다
방식 1: 데이터 형식을 직접 성명합니다
형식:변수 이름 데이터 형식(크기)
V_START_DATE VARCHAR2(19);
v_num number;

설명:
문자열 형식으로 설정할 때 크기를 지정해야 합니다. 그렇지 않으면 오류가 발생합니다.
변수에 대한 선언은 "begin"키워드 앞에 있어야 합니다.
--    
BEGIN
v_sql varchar2(100) := 'SELECT ORGSEQ FROM BASE_ORG_INFO where orgcode=to_char(410621101233)';

메서드2:%TYPE 선언 사용
형식: 변수 이름 테이블 이름.필드 이름%TYPE
의미: 이 변수의 데이터 형식은 지정한 테이블의 지정한 필드의 데이터 형식과 일치합니다
V_ORGSEQ BASE_ORG_INFO.ORGSEQ%TYPE;

방법 3:%ROWTYPE를 사용하여 선언
형식: 변수 이름 테이블 이름%ROWTYPE
의미: 이 변수의 데이터 형식은 지정한 테이블의 지정한 줄 기록 (모든 필드) 의 데이터 형식과 일치합니다
--VIRTUAL_CARD     
V_ROW_VIRTUAL_CARD VIRTUAL_CARD%ROWTYPE; 

요약:
저장 중에 변수를 선언할 때 "DECLARE"키워드를 사용할 필요가 없습니다. 
변수는 대소문자를 구분하지 않습니다.
변수는 사용하기 전에 반드시 성명해야 한다.
2. 변수에 값을 부여하는 3가지 방식
방법 1: 직접 값을 부여하고 ": ="을 사용합니다
사용 조건: 변수를 성명하는 두 가지 방식에 적용됩니다.
V_ORGID :=  '110';  

설명:
변수 뒤에 sql 문장이 직접 있을 수 없습니다. sql는 실행할 수 없습니다. 참고 방법 3.
--    
V_ORGSEQ := SELECT ORGSEQ INTO V_ORGSEQ FROM BASE_ORG_INFO;
--    
V_ORGSEQ := 'SELECT ORGSEQ INTO V_ORGSEQ FROM BASE_ORG_INFO';

변수의 성명과 할당은 함께 진행할 수 있다.
--    
v_sql varchar2(100) := 'SELECT ORGSEQ FROM BASE_ORG_INFO where orgcode=to_char(410621101233)';
BEGIN
 /*      */
END;

방식2:select표 필드 into 변수from표
변형 1: 지정한 테이블의 지정한 필드 조회
사용 조건: 변수를 성명하는 두 가지 방법으로 사용할 수 있다
--      ID             
SELECT ORGSEQ INTO V_ORGSEQ FROM BASE_ORG_INFO
 WHERE ORGID =
       (SELECT PARENTORGID FROM BASE_ORG_INFO WHERE ORGID = V_ORGID);

변형2: 지정한 테이블의 모든 필드 조회
사용 조건: 변수를 설명하는 세 번째 방식에만 적용
-- id=5120 VIRTUAL_CARD        V_ROW_VIRTUAL_CARD
SELECT * INTO V_ROW_VIRTUAL_CARD FROM VIRTUAL_CARD T where t.id = 5120;

설명:
조회 결과는 한 개의 기록만 되돌려줄 수 있다.
질의의 테이블 필드는 해당 테이블의 모든 필드여야 합니다.
오류 예:
--     :         
SELECT * INTO V_ROW_VIRTUAL_CARD FROM VIRTUAL_CARD T;
--     :           
SELECT t.id,t.name INTO V_ROW_VIRTUAL_CARD FROM VIRTUAL_CARD T;  

방식 3:execute immediate sql 문장 문자열 into 변수
declare/*     ,      */
  v_sql varchar2(100);
  V_ORGSEQ varchar2(100);
begin
  v_sql := 'SELECT ORGSEQ FROM BASE_ORG_INFO where orgcode=to_char(410621101233)';
  --V_ORGSEQ  
  execute immediate v_sql INTO V_ORGSEQ;
  --    
  DBMS_OUTPUT.put_line(V_ORGSEQ);
END;

3. 변수의 호출
일반적으로 변수는 이 세 가지 사용 장면만 있는데 그것이 바로 부치, 논리적 판단, 산술 연산이다.
설명: 질의 열로 사용할 수 없습니다.
--    
select V_ORGSEQ from dual;

%ROWTYPE 선언을 사용하는 변수는 어떻게 호출됩니까?
[변수 이름. 테이블 필드]를 사용하여 테이블에 지정된 행(행 반환)에 지정된 열(임의의 열)이 나타내는 데이터를 가져옵니다.
--V_ROW_VIRTUAL_CARD  
SELECT * INTO V_ROW_VIRTUAL_CARD FROM VIRTUAL_CARD T where t.id = 5120;
--  
DBMS_OUTPUT.put_line(V_ROW_VIRTUAL_CARD.ID);  

 
관련 권장사항:
4
  • oracle 저장 프로세스 호출 동적 sql
  •  

    좋은 웹페이지 즐겨찾기