2015-11-09 7 views
1

Я использую sqlplus и имею таблицу с именем users, из которой я хочу получить все значения с помощью stored procedure в oracle. Вот что я пытаюсь сделать -хранимая процедура для выбора запроса без вывода

create or replace procedure getall(prc out sys_refcursor) 
is 
begin 
open prc for select * from users 
end; 
/

Когда я ударил return после этого, я получаю следующее сообщение об ошибке -

Warning: Procedure created with compilation errors. 

Почему это происходит? И как мне получить желаемый результат? Помогите оценить!

ответ

1

Чтобы увидеть ошибки в компиляции, используйте the show errors‌​ SQL*Plus command (что также работает в SQL Developer) или запросите представление user_errors, которое работает с любым клиентом. Вы также можете запросить all_errors, чтобы увидеть проблемы с объектами, которые не входят в вашу схему.

Но вы просто отсутствует точка с запятой после выбора:

create or replace procedure getall(prc out sys_refcursor) 
is 
begin 
    open prc for select * from users; 
end; 
/

Вам нужна переменная связывания, чтобы иметь возможность увидеть выход в SQL * Plus, например:

variable rc refcursor; 
exec getall(:rc); 
print rc 

Обратите внимание на двоеточие до rc в вызове процедуры, который показывает, что это ссылка на переменную привязки. И exec - это сокращенный анонимный блок.

Возможно, вам будет проще иметь функцию, которая возвращает курсор или конвейерную функцию; или просто запросить таблицу напрямую.

+0

спасибо, что помогли много. Вы знаете, как я могу назвать то же самое в классе java и получить ответ там? Большое спасибо @AlexPoole –

+0

@VidhiSinha - есть пример [в этом вопросе] (http://stackoverflow.com/q/9549399/266304). Ответ на этот вопрос также связан с [статьей] (https://oracle-base.com/articles/misc/using-ref-cursors-to-return-recordsets) с полным примером Java. Это довольно просто, но если вы не можете заставить его работать, вы должны задать новый вопрос, показывающий ваш Java-код. –

+0

спасибо bruh, вернусь к вам на этом @Alex Poole –

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