테이블에 값 삽입 Oracle SQL
Oracle SQL의 'Employee' 표에 값을 삽입하려고 합니다.외부 키로 결정된 값 입력과 관련하여 질문이 있습니다.
직원들은 외부 키에 의해 결정되는 세 가지 속성을 가지고 있습니다.상태, 직위 및 관리자.사용 중입니다.INSERT INTO값을 삽입하고 데이터를 수동으로 입력하는 문입니다.데이터를 입력하기 위해 각 참조를 물리적으로 조회해야 합니까? 아니면 사용할 수 있는 명령이 있습니까?예.
INSERT INTO Employee
(emp_id, emp_name, emp_address, emp_state, emp_position, emp_manager)
VALUES
(001, "John Doe", "1 River Walk, Green Street", 3, 5, 1000)
이렇게 하면 직원 테이블에 다음 항목이 채워집니다.(John Doe, 1 River Walk, Green Street, New York, Sales Executive, Barry Green)뉴욕은state_id=3에서State표; 판매실무자는position_id=5에서positions테이블; 그리고 배리 그린은manager_id=1000에서manager테이블.
오라클이 텍스트를 인식하고 관련 ID와 일치시킬 수 있도록 참조된 테이블의 텍스트 값을 입력할 수 있는 방법이 있습니까?저는 이 질문이 의미가 있기를 바랍니다, 어떤 것이든 기꺼이 설명하겠습니다.
감사합니다!
삽입하기 전에 DB에서 더 많은 매개변수를 추출하기 위해 다음 기능을 사용할 수 있습니다.
--
-- insert_employee (Function)
--
CREATE OR REPLACE FUNCTION insert_employee(p_emp_id in number, p_emp_name in varchar2, p_emp_address in varchar2, p_emp_state in varchar2, p_emp_position in varchar2, p_emp_manager in varchar2)
RETURN VARCHAR2 AS
p_state_id varchar2(30) := '';
BEGIN
select state_id
into p_state_id
from states where lower(emp_state) = state_name;
INSERT INTO Employee (emp_id, emp_name, emp_address, emp_state, emp_position, emp_manager) VALUES
(p_emp_id, p_emp_name, p_emp_address, p_state_id, p_emp_position, p_emp_manager);
return 'SUCCESS';
EXCEPTION
WHEN others THEN
RETURN 'FAIL';
END;
/
INSERT
INTO Employee
(emp_id, emp_name, emp_address, emp_state, emp_position, emp_manager)
SELECT '001', 'John Doe', '1 River Walk, Green Street', state_id, position_id, manager_id
FROM dual
JOIN state s
ON s.state_name = 'New York'
JOIN positions p
ON p.position_name = 'Sales Executive'
JOIN manager m
ON m.manager_name = 'Barry Green'
한 번의 맞춤법 실수(또는 추가 공백)는 일치하지 않으며 아무것도 삽입되지 않습니다.
SELECT에서 테이블에 삽입할 수 있습니다.
INSERT INTO
Employee (emp_id, emp_name, emp_address, emp_state, emp_position, emp_manager)
SELECT
001,
'John Doe',
'1 River Walk, Green Street',
(SELECT id FROM state WHERE name = 'New York'),
(SELECT id FROM positions WHERE name = 'Sales Executive'),
(SELECT id FROM manager WHERE name = 'Barry Green')
FROM
dual
아니면, 비슷하게...
INSERT INTO
Employee (emp_id, emp_name, emp_address, emp_state, emp_position, emp_manager)
SELECT
001,
'John Doe',
'1 River Walk, Green Street',
state.id,
positions.id,
manager.id
FROM
state
CROSS JOIN
positions
CROSS JOIN
manager
WHERE
state.name = 'New York'
AND positions.name = 'Sales Executive'
AND manager.name = 'Barry Green'
하지만 이것은 모든 검색이 존재한다고 가정합니다.예를 들어, '판매실무자'라는 직책 이름이 없는 경우 이 버전에는 아무것도 삽입되지 않습니다.
언급URL : https://stackoverflow.com/questions/10422024/inserting-values-into-tables-oracle-sql
'programing' 카테고리의 다른 글
| 검색 엔진 - Lucene 또는 Solr (0) | 2023.08.06 |
|---|---|
| '서버를 사용할 수 없습니다' 서버의 MSDTC (0) | 2023.08.06 |
| 각도:HttpClient에서 파일을 다운로드하는 방법은 무엇입니까? (0) | 2023.08.06 |
| 저장 프로시저 SQLWARN 종료 처리기가 호출되지 않았습니다. (0) | 2023.08.06 |
| php로 일반 텍스트 파일 읽기 (0) | 2023.08.06 |