Мне поручено передать даты начала и окончания даты в процедуру orcale с страницы aspx/C#. У меня есть 2 списка объектов DateTime на странице, список дат начала и список дат окончания.Передача списков DateTime для хранимой процедуры Oracle C#
Вопрос: как я должен это делать? Я считаю, что мне нужно будет создать определенный пользователем тип, чтобы перейти к процедуре, возможно, как массив 2d, но я действительно не уверен, как:
A. Заполните массив значениями из 2 списков, и:
B. Создайте пользовательский тип для перехода к процедуре.
Я немного поработал, но примеров этого мало, и я даже не уверен, что я на правильном пути. Я был бы признателен за любую помощь, поскольку я действительно изо всех сил пытаюсь разобраться в этом. Я включил код Oracle PL/SQL ниже (это не может быть изменен, как у меня нет возможности сделать ammendments):
PROCEDURE p_add_project_dates(
p_project_id IN CS01_PROJECT_HEADER.PROJECT_ID%TYPE,
p_tab_project_dates IN t_tab_project_dates,
p_any_time_participation IN CS01_PROJECT_HEADER.ANY_TIME_PARTICIPATION%TYPE,
p_error_msg OUT VARCHAR2,
p_return_code OUT NUMBER
) IS
occur_added_retcode NUMBER := 0;
occur_added_message VARCHAR2(500);
BEGIN
p_return_code := 0;
-- Update ANY_TIME_PARTICIPATION.
UPDATE CS01_PROJECT_HEADER
SET ANY_TIME_PARTICIPATION = p_any_time_participation
WHERE PROJECT_ID = p_project_id;
-- Add project occurrence for every record in p_tab_project_dates.
FOR i IN 1 .. p_tab_project_dates.COUNT LOOP
CS02_PCK.p_add_project_occurrence(p_project_id, p_tab_project_dates(i).start_date, p_tab_project_dates(i).end_date, occur_added_message, occur_added_retcode);
IF occur_added_retcode = 20 THEN
p_return_code := 20;
EXIT;
END IF;
END LOOP;
IF p_return_code = 0 THEN
COMMIT;
ELSE
ROLLBACK;
p_error_msg := 'An unexpected error occurred';
END IF;
ИСКЛЮЧЕНИЕ
WHEN OTHERS THEN
ROLLBACK;
p_error_msg := 'An unexpected error occurred';
p_return_code := 20;
END p_add_project_dates;
Вам нужно использовать ODP.NET для передачи UDT в сохраненный процесс. Предположительно вы можете использовать Oracle Developer Tools для создания классов для вас. Я использовал примеры и сам закодировал. [Эта статья] (http://developergeeks.com/article/3/user-defined-type-support-in-oracle-odp-net-11g) может помочь. Я также нашел [этот вопрос] (http://stackoverflow.com/q/980421/119477) полезным –
так же, как в сторону, используя КОГДА ДРУГИЕ вернутся, чтобы преследовать вас. Лучшей практикой является использование исключений, которые вы ожидаете, таких как NO DATA FOUND и повышение всего остального. – kevinsky
Спасибо за ссылки, проверит их. – Nick