У меня есть sp в oracle. Мой SP показан нижеКак выполнить PL/SQL Oracle в sqlplus?
create or replace
PROCEDURE GETMONITORING
(
v_namabarang in varchar2 default null,
v_JenisLayanan in varchar2 default null,
cv_1 IN OUT SYS_REFCURSOR
)
AS
v_where VARCHAR2(200);
v_Select VARCHAR2(200);
v_from VARCHAR2(200);
v_final VARCHAR2(200);
v_result VARCHAR2(200);
BEGIN
v_Select:='select * ';
v_from :='from permohonan ';
v_where :='where sysdate=sysdate ';
IF nvl(length(v_namabarang),0) <> 0 then
v_Where := v_Where || ' AND namabarang like ''' || v_namabarang|| '%'' ';
end if;
IF nvl(length(v_jenislayanan),0) <> 0 then
v_Where := v_Where || ' AND jenislayanan like ''' || v_jenislayanan || '%'' ';
end if;
v_final :=v_select|| v_from|| v_where;
dbms_output.put_line(v_result);
END;
Я попытался EXEC в SQLPLUS по
SQL> var r refcursor;
SQL> exec getmonitoring('AC','1',:r);
SQL>print :r;
и результат "ORA-24338": Заявление ручки не выполняется
Итак, как я EXEC мой SP в sqlplus? Благодаря
У меня есть вход «OPEN cv_1 FOR v_final;» и удалите « dbms_output.put_line (v_result);» . Но когда я выполняю мой SP по-прежнему ошибку ORA-0094. спасибо –
Сделайте, как я показал, см. обновленный ответ. Используйте «SHOW ERRORS» и отредактируйте свой вопрос, чтобы показать, что вы на самом деле делаете. –
решена. Я был неправильным вводом «OPEN cv_1 FOR v_final;». Спасибо –