Tôi đang cố chuyển một mảng dữ liệu (varchar
) vào quy trình Oracle. Thủ tục Oracle sẽ được hoặc là gọi từ SQL * Plus hoặc từ một thủ tục PL/SQL như sau:Truyền một mảng dữ liệu làm tham số đầu vào cho quy trình Oracle
BEGIN
pr_perform_task('1','2','3','4');
END;
pr_perform_task
sẽ đọc mỗi của các thông số đầu vào và thực hiện nhiệm vụ.
Tôi không chắc chắn làm thế nào tôi có thể đạt được điều này. Suy nghĩ đầu tiên của tôi là sử dụng một tham số đầu vào của loại varray
nhưng tôi nhận được Error: PLS-00201: identifier 'VARRAY' must be declared
lỗi, khi definiton thủ tục trông như thế này:
CREATE OR REPLACE PROCEDURE PR_DELETE_RECORD_VARRAY(P_ID VARRAY) IS
Để tóm tắt, làm thế nào tôi có thể vượt qua các dữ liệu như một mảng, cho phép vòng lặp SP thông qua từng tham số và thực hiện tác vụ?
Tôi đang sử dụng Oracle 10gR2 làm cơ sở dữ liệu của mình.
Đẹp câu trả lời. Tôi tự hỏi nếu nó có thể làm những gì phương pháp đầu tiên của bạn không, nhưng đối với tình huống mà số lượng các yếu tố trong 't_in' là năng động (có nghĩa là, nó khác nhau cho mỗi cuộc gọi để' thử nghiệm')? Nó có vẻ như một trong những nhu cầu để ít nhất là mã cứng một giới hạn trên cho 'MyType'? Giới hạn đó có thể được nâng lên bằng cách nào đó không? – ggkmath
@ggkmath, dù mảng có lớn đến mức nào, nhưng bạn phải khai báo giới hạn trên VARRAY khi bạn tạo hoặc thay đổi TYPE. – DCookie
Có giải pháp thay thế nào có thể chứa kích thước động như vậy, có lẽ không có VARRAY? Nếu tắt chủ đề, tôi có thể bắt đầu một chủ đề mới. – ggkmath