oracle - 关于程序的 PLS-00103 & ORA -06550
oracle - PLS-00103 & ORA -06550 on procedures
我在尝试 运行 一个使用过程的简单 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: line 2, column 2: PLS-00103: Encountered the symbol
"CREATE" when expecting one of the following: begin function pragma
procedure subtype type current cursor delete exists prior
修改您的代码。
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
。当您创建命名 procedure/function/package 时,您的 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;
/
我在尝试 运行 一个使用过程的简单 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: line 2, column 2: PLS-00103: Encountered the symbol "CREATE" when expecting one of the following: begin function pragma procedure subtype type current cursor delete exists prior
修改您的代码。
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
。当您创建命名 procedure/function/package 时,您的 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;
/