Bất kỳ ai có thể cho tôi biết nếu có thể tạo một thủ tục lưu sẵn trong oracle chấp nhận mảng làm tham số đầu vào và làm thế nào?làm thế nào để tạo một thủ tục lưu trữ trong oracle chấp nhận mảng tham số
8
A
Trả lời
12
Có. Oracle gọi chúng là các bộ sưu tập và có nhiều bộ sưu tập mà bạn có thể sử dụng.
Ví dụ về mảng đơn giản bằng cách sử dụng VARRAY.
DECLARE
TYPE Str_Array IS VARRAY(4) OF VARCHAR2(50);
v_array Str_Array;
PROCEDURE PROCESS_ARRAY(v_str_array Str_Array)
AS
BEGIN
FOR i IN v_str_array.first .. v_str_array.last LOOP
DBMS_OUTPUT.PUT_LINE('Hello '||v_str_array(i));
END LOOP;
END;
BEGIN
v_array := Str_Array('John','Paul','Ringo','George');
PROCESS_ARRAY(v_array);
-- can also pass unbound Str_Array
PROCESS_ARRAY(Str_Array('John','Paul','Ringo','George'));
END;
+0
rất tuyệt vời. Tôi đã thêm một ví dụ thứ hai cho thấy Str_Array (...) làm tham số. –
1
Nếu tôi không sai, có một kiểu gốc được gọi là TABLE về cơ bản là một mảng. Nhưng lần trước tôi sử dụng nó là năm 2001 nên có lẽ có những loại mạnh nhất hiện nay.
Kiểm tra điều này http://www.developer.com/db/article.php/3379271
Bạn có loại khách hàng nào? Bạn có muốn gọi thủ tục này được lưu trữ từ một thủ tục pl/sql khác hoặc từ C# hoặc Java hoặc ...? – tuinstoel