programing

테이블에 값 삽입 Oracle SQL

elecom 2023. 8. 6. 09:49
반응형

테이블에 값 삽입 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

반응형