PL / SQL更新语句错误

时间:2015-01-15 17:01:38

标签: plsql

--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;
/

错误:遇到符号'('期望下列之一

2 个答案:

答案 0 :(得分:0)

需要更改参数的dataType

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;
/

这很好用。

答案 1 :(得分: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;
/