oracle - PLS-00103&程序

时间:2015-08-13 11:33:28

标签: oracle ora-06550 pls-00103

我在尝试运行使用过程的简单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"期待以下之一时:开始函数编译指示   过程子类型当前光标删除存在于

之前

2 个答案:

答案 0 :(得分:0)

对代码的修改。

m(x,y)

/

执行该程序

  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;

答案 1 :(得分:0)

当您创建包含变量声明的匿名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;
/