PL/SQL存储过程编译错误

PL/SQL存储过程编译错误

问题描述:

我试图创建一个存储过程,但在执行下面的存储过程,我得到的编译错误:PL/SQL存储过程编译错误

create or replace procedure "Employee"  
is  
begin 
select unique ID from prod p where p.value in('R44', 
'R76', 
'R79', 
'R20', 
'R02', 
'RY1', 
'R71', 
'R38', 
'R58', 
'RM8', 
'RW8', 
'R74', 
'R73', 
'R99', 
'R72', 
'R19', 
'R33', 
'RN3', 
'R34', 
'RP8', 
'R22', 
'R75', 
'R01', 
'R67', 
'R27', 
'R28', 
'R57', 
'RC5', 
'RW7', 
'RZ9', 
'R77', 
'R07', 
'RW6') 

end;  
/  
+0

这不起作用。可以请任何人帮助我吗? –

+0

这有几个问题。首先,你在选择语句的最后缺少一个分号。其次(也是最重要的)你不能在PL/SQL中没有into子句的情况下执行select。我可能会推荐你阅读这里的文档:https://docs.oracle.com/cd/B28359_01/appdev.111/b28843/tdddg_procedures.htm – Chrisrs2292

+0

你想对查询的结果做什么? 仔细阅读Chrisrs2292的评论;这些是有道理的。但一个选择不会在这里工作,除非你100%确定结果只是1行。 – wieseman

这是很多你的代码错误。
在你的例子中,你的序列背后也缺少一个;
如果你想在屏幕上显示该序列的输出,你不能这样做。
这里是一个工作的例子,可能会给你的指示:

DECLARE 
    CURSOR cProd IS 
      select unique(ID) Id from prod p where p.value in('R44','R76', 
      'R79','R20','R02','RY1','R71','R38','R58','RM8','RW8','R74','R73','R99','R72','R19','R33','RN3', 
      'R34','RP8','R22','R75','R01','R67','R27','R28','R57','RC5','RW7','RZ9','R77','R07','RW6'); 
    rProd cProd%ROWTYPE; 
BEGIN 
    OPEN cProd; 
    FETCH cProd INTO rProd; 
    CLOSE cProd; 

    DBMS_OUTPUT.PUT_LINE(rProd.Id); 
END; 
/

Link about fetching from a cursor.

编辑:
rProd存储从查询中所有的输出线上面的例子。