如何在PLSQL过程中做简单的数组
Posted
技术标签:
【中文标题】如何在PLSQL过程中做简单的数组【英文标题】:How to do simple array in PLSQL procedure 【发布时间】:2012-08-08 12:38:58 【问题描述】:如何在 plsql 中执行类似简单数组的操作?最好用例子来解释。
让我们看看我有什么
PROCEDURE MyProcedure(name varchar2 := '', father varchar2 := '', description varchar2 := '') IS
BEGIN
UPDATE BC_ACTIONTYPEGROUP SET
ColumnName = name,
ColumnFather = father,
ColumnDecription = description
WHERE
ColumnName = name;
IF SQL%ROWCOUNT = 0 THEN
INSERT INTO TableNames (ColumnName, ColumnFather, ColumnDescription)
VALUES (name, description, father);
END IF;
END;
/
MyProcedure('John', '', 'Little John has three brothers');
MyProcedure('George', 'YES', 'George is father of John');
我需要这样的东西
MyProcedure(name=>'John', description=>'Little John has three brothers');
MyProcedure(name=>'George', father=>'YES', description=>'George is father of John');
有可能吗?或者如何在程序中使用这样的东西最简单的方法是什么。
我是 IT 的新学生,所以感谢您的任何建议。
【问题讨论】:
您发布的代码会起作用(尽管 MERGE 语句会是更好的实现方式)。所以请明确你想要做的不同的事情。你想做什么你认为需要一个数组? 【参考方案1】:我不确定您是在寻找数组还是哈希表(关联数组)。
数组很简单:
declare
TYPE names IS VARRAY(6) OF VARCHAR2(20) ;
name names;
name names.extend(1);
begin
name(1) := 'John Doe';
end;
参考:http://docs.oracle.com/cd/B10500_01/appdev.920/a96624/05_colls.htm
对于关联数组,您必须定义一个类型,例如:
TYPE my_type IS TABLE OF VARCHAR2(256) INDEX BY VARCHAR2(5);
-- Declare actual associative array using new data type.
my_array my_type;
my_key VARCHAR2(5);
看看这个:
http://javaconfessions.com/2008/08/associative-arrays-hashtables-for-plsql.html
http://tylermuth.wordpress.com/2008/02/21/plsql-associative-arrays/
然后按照以下步骤将数组传递给函数或过程:
How to use pass an array in PL/SQL function
【讨论】:
以上是关于如何在PLSQL过程中做简单的数组的主要内容,如果未能解决你的问题,请参考以下文章