2012-05-04 1 views
0

다음 절차를 사용하여 Employees 테이블에 값을 삽입하려고합니다. 오류가 발생했습니다. 아무도 내게 문제를 설명해 주시겠습니까? 오류 코드 : 29 행 : SQL 문이 무시되었습니다.직원 삽입 절차 : PL/SQL 문이 무시되었습니다.

CREATE OR REPLACE PROCEDURE insert_employee(
    p_emp_id IN NUMBER, 
    p_emp_fname IN VARCHAR2, 
    p_emp_sname IN VARCHAR2, 
    p_emp_add1 IN VARCHAR2, 
    p_emp_add2 IN VARCHAR2, 
    p_emp_town IN VARCHAR2, 
    p_emp_county IN VARCHAR2, 
    p_emp_telno IN NUMBER, 
    p_emp_position IN VARCHAR2, 
    p_emp_manager IN VARCHAR2 

) IS 
    v_county_id County.county_id%type; 
    v_position_id Positions.position_id%type; 
    v_manager_id Facilities.facilty_id%type; 
BEGIN  

    SELECT county_id 
    INTO v_county_id 
    FROM County WHERE county_name = p_emp_county; 

    SELECT position_id 
    INTO v_position_id 
    FROM Positions WHERE position_name = p_emp_position; 

    SELECT facility_manager 
    INTO v_manager_id 
    FROM Facilities WHERE facility_name = p_emp_manager; 

    INSERT INTO Employees (emp_id, emp_fname, emp_sname, emp_add1, emp_add2, emp_town, emp_county, emp_telno, emp_position, emp_salary, emp_manager) 
    VALUES(p_emp_id, p_emp_fname, p_emp_sname, p_emp_add1, p_emp_add2, p_emp_town, v_county_id, p_emp_telno, v_position_id, p_emp_salary, v_manager_id); 
END; 
/

답변

0

커서 또는 변수를 선택해야합니까?

예.

SELECT county_id into v_country 
    FROM County WHERE county_name = p_emp_county; 
+0

절차가 호출되면 사용자는 모든 p_emp_ 값을 입력해야합니다. 그 값을 신입 사원에게 귀속시키고 싶습니다. 내'SELECT' 문은 아마도 문제를 일으키고 있지만 어떻게 수정해야할지 모르겠다. – adohertyd

1

SELECT를 제거하십시오. 잘못된 구문으로되어 있기 때문에 여기서는 아무 것도하지 마십시오. 다음 예는 과도하게 단순화되었으며 실제로 이전에 선택했던 값을해야하는 경우

CREATE OR REPLACE PROCEDURE insert_employee(
    p_emp_id IN NUMBER, 
    p_emp_fname IN VARCHAR2, 
    p_emp_sname IN VARCHAR2, 
    p_emp_add1 IN VARCHAR2, 
    p_emp_add2 IN VARCHAR2, 
    p_emp_town IN VARCHAR2, 
    p_emp_county IN VARCHAR2, 
    p_emp_telno IN NUMBER, 
    p_emp_position IN VARCHAR2, 
    p_emp_manager IN VARCHAR2 

) IS 
BEGIN  

    INSERT INTO Employees (emp_id, emp_fname, emp_sname, emp_add1, emp_add2, emp_town, emp_county, emp_telno, emp_salary, emp_position, emp_manager) 
    VALUES(p_emp_id, p_emp_fname, p_emp_sname, p_emp_add1, p_emp_add2, p_emp_town, p_emp_county, p_emp_telno, p_emp_salary, p_emp_position, p_emp_manager); 

END; 

(예 : 당신은 또한 종업원에 그 삽입) : 또한 오류를 숨기기보다 더 아무것도하지없는 무의미한 오류 "처리기"를 제거 예를 들어 "select into"구문을 사용해야합니다.

... 
) IS 
    v_county_id county.county_id%type; 
    v_xxx county.xxx%type; 
BEGIN  

    SELECT county_id 
    INTO v_county_id 
    FROM County WHERE county_name = p_emp_county; 
    ... 
+0

고마워. Tony, 예. 내가 선택한 값이 필요해. 문법이 잘못되었습니다. 코드의 두 번째 블록은 내 Employee 테이블에 해당 값을 넣을 수 있어야합니다. – adohertyd

+0

네, 단지 매개 변수를 사용하는 것과 똑같이 insert 문의 VALUES 절에서'v_county_id' (예를 들어)를 사용할 수 있습니다. –

+0

Tony 나는 이제 다른 오류를 내 코드를 업데이트했습니다 – adohertyd

2

지역 변수 선언은 각 줄의 끝에 세미콜론이 있어야합니다

) IS 
    v_county_id County.county_id%type; 
    v_position_id Positions.position_id%type; 
    v_manager_id Facilities.facilty_id%type; 
+0

그랬지만 여전히 오류가 발생했습니다. – adohertyd

+0

@adohertyd -보고있는 오류 메시지를 포함하도록 질문을 편집하십시오. –

+0

데이비드 완료. 오류는 다음과 같습니다 - 29 행 : SQL 문이 무시되었습니다. – adohertyd

0

는 사용자가 입력해야하는; 변수 정의 후 쉼표 대신.

+0

나는 그것이 여전히 오류를 던지고 있음을 확인했다. – adohertyd

0

점검 열 이름

v_manager_id 기능. facilty _id % 유형;

발신 위치 시설 시설 _name = p_emp_manager;

0
create or replace procedure procOne(sid OUT number,sname OUT varchar,fee OUT number) 
as 
begin 
insert into student values(sid,sname,fee); 
end;