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),以便前两种情况如果
构造已完成但我怎么能在匿名块中调用它。
答案 0 :(得分:1)
我不确切知道你的integer_array
是如何定义的,但是应该是这样的:
declare
a_TAG_ID NUMBER := 1;
a_PLACE_ID VARCHAR2 := 'TEST';
a_INPUT integer_array := integer_array(1, 2);
a_status VARCHAR2;
a_status_dtl VARCHAR2;
begin
modify_stck_fa_pallet_test(a_TAG_ID,
a_PLACE_ID,
a_INPUT,
a_status,
a_status_dtl);
end;
/