PL/SQL 在过程中更改 1 行中的值

PL/SQL change value in 1 row in procedure

我不知道错误在哪里。我必须编写将更改 1 个特定行的过程。每次我吃午饭,给我写信:

Errors: PROCEDURE RENAME_FLYTICKET Line/Col: 1/65 PLS-00103: Encountered the symbol "(" when expecting one of the following:

:= . ) , @ % default character The symbol ":=" was substituted for "(" to continue.

CREATE OR REPLACE PROCEDURE rename_flyticket (code_ticket INTEGER, new_id varchar2(50)) AS  
 BEGIN  
   UPDATE Flyticket SET id = new_id WHERE flyticketcode = code_ticket;    
COMMIT;  
END; 

我认为你想要的语法是:

create or replace procedure rename_flyticket (
    p_code_ticket in integer, 
    p_new_id in varchar2
) 
as
begin  
    update flyticket set id = p_new_id where flyticketcode = p_code_ticket;    
    commit;  
end; 
/

原始代码的主要问题是数据类型不采用 length/precision。所以 VARCHAR2(50) 应该只是 VARCHAR2.

我还为参数添加了 IN 关键字(未指定时这是默认关键字,但我发现最好明确说明)。