0

Employees次の手順を使用して、テーブルに値を挿入しようとしています。エラーが発生しています。誰でも私に問題を説明してもらえますか? エラー コード: 29 行目: 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;
/
4

6 に答える 6

2

ローカル変数の宣言には、各行の終わりにセミコロンが必要です。

) IS 
    v_county_id County.county_id%type;
    v_position_id Positions.position_id%type;
    v_manager_id Facilities.facilty_id%type;
于 2012-05-04T12:15:20.667 に答える
2

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;

例が単純化されすぎていて、以前に選択していた値が実際に必要な場合 (たとえば、それらを Employees にも挿入する場合)、「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;
    ...
于 2012-05-04T09:57:27.873 に答える
0

次のように入力する必要があります; 変数定義の後、代わりにコンマ。

于 2012-05-04T15:11:02.990 に答える
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;
于 2013-10-24T17:58:48.080 に答える
0

カーソルまたは変数を選択する必要がありますか?

例えば

SELECT county_id into v_country
    FROM County WHERE county_name = p_emp_county;
于 2012-05-04T09:46:33.200 に答える