首页 文章

oracle - PLS-00103和ORA -06550程序

提问于
浏览
0

我在尝试运行使用过程的简单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:第2行,第2列:PLS-00103:遇到以下其中一项时遇到符号“CREATE”:begin function pragma procedure子类型当前游标删除存在之前

2 回答

  • 0

    对代码的修改 .

    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;
    
  • 0

    当您're creating an anonymous PL/SQL block that contains variable declarations. When you'重新创建命名过程/函数/包时,您只需要 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;
    /
    

相关问题