Oracle 我想调用一个过程,在这个过程中,我将一组数字作为i/p参数

Oracle 我想调用一个过程,在这个过程中,我将一组数字作为i/p参数,oracle,stored-procedures,plsql,plsqldeveloper,Oracle,Stored Procedures,Plsql,Plsqldeveloper,我需要将这个提供p_输入的过程调用为(1,2),以便 构造已完成,但如何在匿名块中调用它。我不知道您的整数数组是如何定义的,但应该是这样的: 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

我需要将这个提供p_输入的过程调用为(1,2),以便


构造已完成,但如何在匿名块中调用它。

我不知道您的
整数数组是如何定义的,但应该是这样的:

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;

查看是否有帮助我关心的是,当我在plsql developer toll上测试此过程时,如何调用此过程。它不要求p_输入参数。我需要将多个值传递给p_输入参数。不确定如何在plsql developer中执行此过程。
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;
/