得到pls-00103错误

时间:2017-11-12 19:22:33

标签: sql oracle

//这是我的创建表代码,标题是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

2 个答案:

答案 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)对于命名过程,您不需要DECLAREDECLARE仅用于匿名阻止。

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)您的本地变量abcstored未被使用,因此在此示例中是多余的。