Я пытаюсь создать хранимую процедуру в Oracle, которая имеет один входной параметр и одну выходную переменную и, в случае результатов, возвращает набор данных в мое приложение. Net. Основная проблема заключается в том, что я не могу изменить сигнатуру процедуры, и мне нужно выполнить условие, чтобы проверить, существуют ли записи или нет. Основная проблема, с которой я столкнулся, связана с курсорами (для выполнения и возврата информации) и для подсчета результатов выбора.
Вот пример того, что я делаю, чтобы попытаться получить данные.
CREATE PROCEDURE SP_Testing (v_input IN VARCHAR2(50), v_OutID NUMBER(1))
AS
TYPE v_record_botoes IS RECORD (
v_dummy_col1 VARCHAR2(50),
v_dummy_col2 VARCHAR2(250)
);
TYPE table_botoes IS TABLE OF v_record_botoes;
tt_botoes table_botoes;
v_ref_cursor SYS_REFCURSOR;
CURSOR v_cursor IS
(SELECT dt.v_dummy_col1,
dt.v_dummy_col2
FROM dummy_table dt
WHERE v_dummy_col3 = v_input);
v_check NUMBER;
BEGIN
tt_botoes := table_botoes();
v_check := 0;
FOR v_row IN v_cursor
LOOP
tt_botoes.extend;
tt_botoes(tt_botoes.COUNT) := v_row;
END LOOP;
v_check := tt_botoes.COUNT;
-- condition that need to know the nr of records of the select
IF v_check = 0 THEN
v_OutID := 0;
ELSE
v_OutID := 1;
OPEN v_ref_cursor FOR
SELECT *
FROM tt_botoes; -- also tryed "FROM TABLE (tt_botoes)" and "FROM TABLE (cast(tt_botoes AS table_botoes))"
-- return dataset to .net application
DBMS_SQL.RETURN_RESULT(v_ref_cursor)
END IF;
END;
Уже пытались преобразовать v_cursor в sys_refcursor , который будет выдан пакетом DBMS_ SQL , но не получил нигде Также я попытался создать временную таблицу для хранения информации, но затем возникла проблема с параллелизмом.
Есть идеи, что я делаю неправильно, или есть какое-либо другое возможное решение для решения этой проблемы?
Заранее спасибо