aspx/c# ページから orcale プロシージャに開始日と終了日を渡すタスクが与えられました。ページに DateTime オブジェクトの 2 つのリスト、開始日のリストと終了日のリストがあります。
私の質問は、これを行うにはどうすればよいですか? おそらく2次元配列として、プロシージャに渡すユーザー定義型を作成する必要があると思いますが、次の方法が本当にわかりません。
A. 配列に 2 つのリストの値を入力し、次のことを行います。
B. プロシージャに渡すユーザー定義型を作成します。
私は少し掘り下げましたが、これの良い例はあまりなく、正しい軌道に乗っているかどうかさえわかりません. これを回避するのに本当に苦労しているので、何か助けていただければ幸いです。以下に oracle pl/sql コードを含めました (修正する権限がないため、これを変更することはできません)。
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;