【发布时间】:2014-07-24 16:23:39
【问题描述】:
CREATE OR REPLACE PROCEDURE modify_stck_fa_pallet_test (
p_TAG_ID IN NUMBER,
p_PLACE_ID IN VARCHAR2,
p_INPUT IN integer_array,
p_status OUT VARCHAR2,
p_status_dtl OUT VARCHAR2)
IS
l_PLACE_ID id_place_id := id_place_id ();
v_STR VARCHAR2 (3000);
v_rec_cnt NUMBER;
BEGIN
v_STR :=
'SELECT pm(w.place_id)
FROM pod_place_warehouse_mapping_tb W
where ( w.place_id IN (' || p_PLACE_ID || '))';
EXECUTE IMMEDIATE v_STR BULK COLLECT INTO l_PLACE_ID;
FOR i IN l_PLACE_ID.FIRST .. l_PLACE_ID.LAST
LOOP
DBMS_OUTPUT.put_line (l_PLACE_ID (i).place_id);
FOR j IN 1 .. p_INPUT.COUNT
LOOP
IF p_INPUT (j) = 1
THEN
UPDATE pod_branch_sheet_upload_tb
SET is_active = 0
WHERE place_id = l_PLACE_ID (i).place_id AND tag_id = p_TAG_ID;
COMMIT;
p_status := 'SUCCESS';
p_status_dtl := v_rec_cnt || ' Record Updated Successfully';
ELSIF p_INPUT (j) = 2
THEN
UPDATE pod_stock_image_upload_tb
SET is_active = 0
WHERE place_id = l_PLACE_ID (i).place_id AND tag_id = p_TAG_ID;
COMMIT;
p_status := 'SUCCESS';
p_status_dtl := v_rec_cnt || ' Record Updated Successfully';
ELSIF p_INPUT (j) = 3
THEN
UPDATE pod_fa_sheet_upload_tb
SET is_active = 0
WHERE place_id = l_PLACE_ID (i).place_id AND tag_id = p_TAG_ID;
COMMIT;
p_status := 'SUCCESS';
p_status_dtl := v_rec_cnt || ' Record Updated Successfully';
ELSIF p_INPUT (j) = 4
THEN
UPDATE pod_fa_image_upload_tb
SET is_active = 0
WHERE place_id = l_PLACE_ID (i).place_id AND tag_id = p_TAG_ID;
COMMIT;
p_status := 'SUCCESS';
p_status_dtl := v_rec_cnt || ' Record Updated Successfully';
ELSIF p_INPUT (j) = 5
THEN
UPDATE pod_pallet_sheet_upload_tb
SET is_active = 0
WHERE place_id = l_PLACE_ID (i).place_id AND tag_id = p_TAG_ID;
COMMIT;
p_status := 'SUCCESS';
p_status_dtl := v_rec_cnt || ' Record Updated Successfully';
END IF;
END LOOP;
END LOOP;
EXCEPTION
WHEN OTHERS
THEN
ROLLBACK;
p_status_dtl := SQLCODE || ' - ' || SUBSTR (SQLERRM, 1, 100);
p_status := 'ERROR';
END;
我需要调用这个过程,提供 p_INPUT 作为 (1,2) 以便前两种情况的 if
构造已完成,但我如何在匿名块中调用它。
【问题讨论】:
-
看看this是否有用
-
我关心的是当我在 plsql developer toll 上测试它时如何调用这个过程它不要求 p_input 参数我需要将多个值传递给 p_input 参数
-
不确定如何在 PLSQL Developer 中执行。
标签: oracle stored-procedures plsql plsqldeveloper