Oracle sql에서 "%Type"은 무엇을 의미합니까?
Oracle과 TOAD(SSMS를 알고 있습니다)를 처음 경험하게 되었습니다. 업데이트 프로시저에서 입력 매개 변수 옆에 있는 "%Type"을 발견했는데, 어떤 의미인지 알 수 없습니다.구글에서 "%Rowtype" 관련 링크를 찾았습니다.같은 것, 혹은 다른 것이 완전히 다른가요?
애매하다면 사과드립니다.늘 그렇듯이 도와주셔서 감사합니다.
- %타입
- %ROWTYPE
%타입
%TYPE
는 기존 테이블에서 컬럼의 데이터 유형과 관련하여 변수를 선언하기 위해 사용됩니다.
DECLARE v_id ORDERS.ORDER_ID%TYPE
여기서의 이점은 데이터 유형이 변경되어도 변수 데이터 유형이 동기화 상태를 유지할 수 있다는 것입니다.
참고 자료: http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14261/fundamentals.htm#i6080
%ROWTYPE
개별 변수(및 해당 데이터 유형)를 지정할 필요 없이 커서 또는 테이블의 결과 집합에서 단일 레코드를 포함하도록 단일 변수를 선언하는 데 사용됩니다.예:
DECLARE
CURSOR c1 IS
SELECT last_name, salary, hire_date, job_id
FROM employees
WHERE employee_id = 120;
-- declare record variable that represents a row fetched from the employees table
employee_rec c1%ROWTYPE;
BEGIN
-- open the explicit cursor and use it to fetch data into employee_rec
OPEN c1;
FETCH c1 INTO employee_rec;
DBMS_OUTPUT.PUT_LINE('Employee name: ' || employee_rec.last_name);
END;
/
OMG 조니가 지적한 목적과는 별개로%TYPE
는 이전에 선언된 변수에 의해 사용된 것과 동일한 데이터 유형을 상속하기 위해서도 사용됩니다.
구문은 다음과 같습니다.
DECLARE
L_num NUMBER(5,2) NOT NULL default 3.21;
L_num_Test L_num%TYPE := 1.123;
따라서 두 번째 변수의 데이터 유형을 선언할 필요가 없습니다.L_num_Test
.
이 토픽에 관한 자세한 설명이 필요한 경우는, 코멘트해 주세요.
참고 자료: https://docs.oracle.com/cd/B19306_01/appdev.102/b14261/fundamentals.htm#BEIIGBBF
%Type과 그 용도:
- %Type 데이터형은 지정된 테이블의 열 이름 데이터 형식으로 변수를 정의하는 데 사용됩니다.
- 고객 테이블의 작은 예를 들어 보겠습니다.여기서 Customer_name data type은 varchar2(30)입니다.%type을 지정하면 지정된 열 또는 변수는 데이터 유형을 varchar2(30)로 간주합니다.
- 이걸 정의하려면 낮아요?[vCustomerName ]고객명 %TYPE: 위의 define 스테이트먼트에서는 <고객명>님의 데이터 타입이 vCustomerName이라는 변수에 할당됩니다.Real life 예 : 직접 테이블에서 데이터 유형의 할당을 확인하기 위해 단순 PL SQL 블록을 생성하는 경우.PL SQL 블록:
몇 가지 예
set serveroutput on
DECLARE
var1 table_a.id%TYPE;
var2 table_a.value%TYPE;
var3_row table_a%ROWTYPE;
BEGIN
SELECT id,value
INTO var1, var2
FROM table_a
WHERE id= 8 AND ROWNUM<=1;
SELECT id+100,value INTO var3_row from table_A where rownum=1;
INSERT INTO table_a VALUES var3_row;
dbms_output.put_line('this is a test');
dbms_output.put_line(var1);
dbms_output.put_line(var2);
NULL; -- do something useful here
EXCEPTION
WHEN NO_DATA_FOUND THEN
NULL; -- do something appropriate here
WHEN TOO_MANY_ROWS THEN
NULL; -- do something appropriate here
END;
/
언급URL : https://stackoverflow.com/questions/3790658/what-does-type-mean-in-oracle-sql
'programing' 카테고리의 다른 글
워치를 디바운스 또는 스로틀 할 수 있습니까?워치를 디바운스 또는 스로틀 할 수 있습니까?비스듬히_lodash를 사용하는 JS?비스듬히_lodash를 사용하는 JS? (0) | 2023.02.17 |
---|---|
여기서 "origin is not allow by Access-Control-Allow-Origin" 오류가 나타나는 이유는 무엇입니까? (0) | 2023.02.17 |
전개 후 "Uncatched Error: [$injector:unpr]"가 각진 상태로 표시됩니다. (0) | 2023.02.17 |
AngularJS 상수 (0) | 2023.02.17 |
javascript에서 문자열 배열을 배열로 변환 (0) | 2023.02.17 |