//这是我的创建表代码,标题是varchar2(30)
create table ratings(title references game(title)on delete cascade primary key,
steam integer,
ign integer);
//我正在尝试在sqlplus中执行的存储过程代码
create or replace procedure databas(title varchar2(20),steam number,ign number)
as
declare abc varchar2(20);
stored number;
begin
update ratings
set ratings.steam=databas.steam,
ratings.ign=databas.ign
where ratings.title=databas.title;
End;
/
但我收到错误pls-00103
答案 0 :(得分:0)
我希望:
create or replace procedure databas (
in_title varchar2(20),
in_steam number,
in_ign number
)
as
abc varchar2(20); -- not used
stored number; -- not used
begin
update ratings
set steam = in_steam,
ign = in_ign
where title = in_title;
End;
/
答案 1 :(得分:0)
您的程序中有两个错误:
1)您不需要指定要传入的(20)
的长度VARCHAR2
。 PL / SQL非常聪明,可以自行解决。
2)对于命名过程,您不需要DECLARE
。 DECLARE
仅用于匿名阻止。
create or replace procedure databas(title varchar2, steam number, ign number)
as
begin
update ratings
set ratings.steam=databas.steam,
ratings.ign=databas.ign
where ratings.title=databas.title;
End;
/`
3)您的本地变量abc
和stored
未被使用,因此在此示例中是多余的。