PL / SQL编译错误与声明变量

时间:2018-03-15 14:11:33

标签: oracle plsql

我正在尝试创建一个基本的PL / SQL查询,其中我使用某个SKU作为参数,这样我就可以在不每次键入sku的情况下引用它。

编译我的代码时出现错误:

  

错误报告:   ORA-06550:第6行第1列:   PLS-00428:此SELECT语句中需要一个INTO子句   06550. 00000 - "行%s,列%s:\ n%s"   *原因:通常是PL / SQL编译错误。   *操作:

这是我的代码:

declare
myitem number (20);
begin 
myitem := 1000956;

select f.order_no
from fdt_maptool f
where f.item = myitem;

end; 
/

我想也许这与我使用VARCHAR(20)而不是NUMBER有关,所以我也试过了。

declare
myitem number;
begin 
myitem := 1000956;

select f.order_no
from fdt_maptool f
where f.item = myitem;

end; 
/

然后收到此错误:

  

错误报告:   ORA-06550:第6行第1列:   PLS-00428:此SELECT语句中需要一个INTO子句   06550. 00000 - "行%s,列%s:\ n%s"   *原因:通常是PL / SQL编译错误。   *行动:

我是PL / SQL的新手,所以如果请放轻松我!

1 个答案:

答案 0 :(得分:2)

在PLSQL中你需要选择进入

declare
   myitem number(20);
   myorder number(20);
begin 
   myitem := 1000956;

   select f.order_no
   into myorder
   from fdt_maptool f
   where f.item = myitem;

end; 
/

现在有两个可能出错的标准事物。您可能找不到记录,也可能找不到多条记录。您需要异常处理程序来处理这些情况。

declare
   myitem number(20);
   myorder number(20);
begin 
   myitem := 1000956;

   select f.order_no
   into myorder
   from fdt_maptool f
   where f.item = myitem;

exception
   when no_data_found then
    dbms_output.put_line('No record with this ID');

   -- Only needed when not selecting a unique column.
   when too_many_rows then
    dbms_output.put_line('More than one record with this ID');

end; 
/

请注意,too_many_rows异常通常已经包含在您选择的ID列上,该ID列上定义了唯一约束。