PLS-00103 和 ORA -06550 关于程序



在尝试运行一个使用过程的简单PL/SQL程序时,我得到了上述错误。我不知道哪里出错了,请帮帮我。

declare
    create or replace procedure palindrome (x in number,y out number) is
    i integer;
    j integer;
    k integer:=0;
begin
    i:=x;
    while i>0
    loop
        j:=mod(i,10);
        k:=k*10+j;
        i:=i/10;
    end loop;
    y:=k;
end;
begin
    x integer:=121;
    y integer;
    palindrome(x,y);
    dbms_output.put_line(y);
end;

/第2行错误:

ORA-06550:第二行,第二列:PLS-00103:遇到符号"CREATE",当期望下列操作之一时过程子类型类型当前游标删除存在优先

修改你的代码

  create or replace procedure palindrome (x in number,y out number) is
    i integer;
    j integer;
    k integer:=0;
begin
    i:=x;
    while i>0
    loop
        j:=mod(i,10);
        k:=k*10+j;
        i:=i/10;
    end loop;
    y:=k;
    dbms_output.put_line(y);
end;

/

执行程序

declare
y number;
begin
 palindrome(133,y);
end;

只有在创建包含变量声明的匿名PL/SQL块时才需要DECLARE。当您创建一个命名过程/函数/包时,您的CREATE OR REPLACE ...语句将取代DECLARE语句。在该语句和相应的BEGIN之间的任何内容都称为声明节。

如果你试图创建一个命名过程,然后你可以用另一个PL/SQL匿名块调用,在这种情况下,你会这样做:

create or replace procedure palindrome (x in number,y out number) is
    i integer;
    j integer;
    k integer:=0;
begin
    i:=x;
    while i>0
    loop
        j:=mod(i,10);
        k:=k*10+j;
        i:=i/10;
    end loop;
    y:=k;
end;
/
declare
    x integer := 121;
    y integer;
begin
    palindrome(x,y);
    dbms_output.put_line(y);
end;
/

或者如果你试图在匿名PL/SQL中声明一个过程,在这种情况下,你会这样做:

declare
    x integer := 121;
    y integer;
    procedure palindrome (x in number, y out number) is
        i integer;
        j integer;
        k integer := 0;
    begin
        i := x;
        while i > 0
        loop
            j := mod(i,10);
            k := k*10 + j;
            i := i/10;
        end loop;
        y := k;
    end palindrome;
begin
    palindrome(x,y);
    dbms_output.put_line(y);
end;
/

相关内容

  • 没有找到相关文章

最新更新