【发布时间】:2010-10-24 06:57:47
【问题描述】:
谁能告诉我是否可以在 oracle 中创建一个接受数组作为输入参数的存储过程以及如何创建?
【问题讨论】:
-
你有什么样的客户?您想从另一个 pl/sql 过程还是从 C#、Java 或 ... 调用此存储过程?
标签: oracle arrays stored-procedures
谁能告诉我是否可以在 oracle 中创建一个接受数组作为输入参数的存储过程以及如何创建?
【问题讨论】:
标签: oracle arrays stored-procedures
是的。 Oracle 将它们称为集合,您可以使用多种集合。
使用 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;
【讨论】:
如果我没记错的话,有一个名为 TABLE 的原生类型,它基本上是一个数组。但我上次使用它是 2001 年,所以也许现在有最强大的类型。
【讨论】: