2015-01-15 72 views
0
--Student(id, company) Table schema 

create or replace procedure student_update(
    v_company IN VARCHAR2(10), 
    v_id IN NUMBER 
) 
IS 
BEGIN 
    update student set company=v_company where id=v_id; 
    commit; 
END student_update; 
/

錯誤:出現符號「(」,其中預計以下PL/SQL更新語句錯誤

回答

0

一個需要改變的參數

create or replace procedure student_update(
    v_company IN student.company%TYPE, 
    v_id IN student.id%TYPE 
) 
IS 
BEGIN 
    update student set company=v_company where id=v_id; 
END; 
/

這正常的數據類型

0

你不能給你一個參數的長度,如果你真的需要限制v_company到10,你可以在程序中做一個長度檢查。

您也可以考慮使用Native Dynamic SQL進行研究。您有直接從輸入中運行代碼的風險。

CREATE OR REPLACE PROCEDURE student_update 
(
    v_company IN VARCHAR2 
    ,v_id  IN NUMBER 
) IS 
BEGIN 
    IF LENGTH(v_company) > 10 THEN 
     raise_application_error(-20001, 'Company must be 10 Char or less.'); 
    END IF; 

    UPDATE student SET company = v_company WHERE ID = v_id; 

    COMMIT; 
END student_update; 
/