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
关键字(未指定时这是默认关键字,但我发现最好明确说明)。
我不知道错误在哪里。我必须编写将更改 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
关键字(未指定时这是默认关键字,但我发现最好明确说明)。