我正在尝试创建一个基本的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的新手,所以如果请放轻松我!
答案 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列上定义了唯一约束。