INSERT ALL에는 두 가지 용도가 있습니다. 하나는 선택한 열의 다른 하위 집합을 표에 삽입하는 것입니다. 다른 하나는 특정 기준에 따라 행을 다른 행으로 안내하는 것입니다. 두 경우 모두 데이터는 VALUES가 아닌 SELECT 절에서 가져옵니다. See the examples in the documentation.
일반적으로 복수 INSERT
문을 단일 PL/SQL 블록에 잠재적으로 작성할 수 있습니다. 당신이 정말로 하나의 SQL 문에서이 작업을 수행하려면
begin
Insert Into Patient Values
('101', '1 house', Null, 'Kingston', 'Surrey', 'KT1 1XX', '10/jan/1980', 'm', 01452987456);
Insert Into Patient Values
('102', '2 egg rd', 'vail', 'guildford', 'Surrey', 'GU1 1LL', '05/dec/1985', 'm', 01452987456);
Insert Into Patient Values
('103', '6 station rd', Null, 'guildford', 'Surrey', 'GU1 2XX', '15/may/1990', 'f', 01452987456);
end;
/
같은 무언가가, 당신은 INSERT ... SELECT
할 수 있지만, 일반적으로 세 개의 문을 사용하는 것보다 더 복잡 할 것입니다.
insert into patient
select *
from (select '101' id, '1 house' addr, null col1, 'Kingston' city, ...
from dual
union all
select '102', '2 egg rd', 'vail', 'guildford', 'Surrey', 'GU1 1LL', '05/dec/1985', 'm', 01452987456
from dual
union all
select '103', '6 station rd', Null, 'guildford', 'Surrey', 'GU1 2XX', '15/may/1990', 'f', 01452987456
from dual)
난 당신이 적절한 데이터 형식을 사용하고
INSERT
문에서 열 이름을 지정하는주의도한다. 예를 들어,
Patient
테이블의 첫 번째 열이
NUMBER
으로 정의 된
PatientID
일종이라고 추측합니다. 그렇다면 실제로는 문자열이 아닌 숫자를 삽입하고 싶을 것입니다. 마찬가지로, '15/may/1990 '과 같은 값을 갖는 일곱 번째 열은 아마도 테이블에
DATE
으로 정의됩니다. 그렇다면
INSERT
은 특정 형식 마스크가있는
TO_DATE
을 명시 적으로 호출하거나 ANSI 날짜 형식 (예 :
date '1980-01-10'
)을 사용하여 문자열이 아닌
DATE
을 삽입해야합니다. 마지막 열에 선행 0을 유지하려면 데이터베이스의 열이
VARCHAR2
으로 정의되고 숫자가 아닌 문자열을 삽입해야합니다.
'insert all'... 하나의 인스트럭션 인서트가 필요합니까? –
''v $ version from dual '을 받으려면, –
받고 계신가요? –