2016-11-24 3 views
-4

Я попытался создать хранимую процедуру, но При выполнении хранимой процедуры ниже, я получаю ошибку компиляции: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

Есть несколько проблем с этим. Во-первых, в конце выражения select отсутствует пропущенная запятая. Во-вторых (и самое главное) вы не можете выполнить выбор без предложения в PL/SQL. Я бы рекомендовал вам ознакомиться с документацией здесь: https://docs.oracle.com/cd/B28359_01/appdev.111/b28843/tdddg_procedures.htm – Chrisrs2292

+0

Что вы хотите сделать с результатом запроса? Внимательно прочитайте комментарии Chrisrs2292; они имеют смысл. Но выбор в wont работать здесь, если вы не на 100% уверены, что результат будет всего лишь 1 строка. – wieseman

ответ

0

Они много не так с вашим кодом.
В вашем примере вам также не хватает ; за вашей последовательностью.
Если вы хотите показать результат этой последовательности на экране, вы не сможете сделать этого.
Вот рабочий пример, который может дать вам указание:

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.

Edit:
В rProd в приведенном выше примере сохраняются все выходные строки из вашего запроса.

Смежные вопросы