0 0

oralce 数据类型5

在oracle 存储过程中 我想创建以下存储过程 tab_args是一个数组  我想制作一个数组里面可以放数字也可以放字符串也可以放日期。这个类型该如何定制。
还有 如下形式 如果数组内容有多个的话 怎么写这个存储过程

procedure executePrarmSql(,p_sql varchar2,  p_args tab_args) as
      begin
        execute immediate p_sql using  p_args(1).arg, p_args(2).arg ,p_args(3).arg;
      end;
2011年5月26日 16:52

2个答案 按时间排序 按投票排序

0 0

采纳的答案

你这个需求很难实现,说下原因,
存放多个类型的数组可以通过自定义类型实现

CREATE OR REPLACE TYPE types_obj_type AS OBJECT
(
    typesIndex NUMBER,
    num NUMBER,
    str VARCHAR2(100),
    d   DATE
)
CREATE OR REPLACE TYPE parm_arrays_type AS TABLE OF types_obj_type

DECLARE
    arr parm_arrays_type;
BEGIN
    arr := parm_arrays_type();
    arr.EXTEND(3);
    arr(1) := types_obj_type(1,1,NULL,NULL);
    arr(2) := types_obj_type(2,NULL,'aaa',NULL);
    arr(3) := types_obj_type(3,NULL,NULL,SYSDATE);
END;


问题是using后面的参数个数是不确定的,所以使用using实现不了,动态参数可以自己手动替换,但是这样的话参数必须是字符串了,和多类型参数的需求背离了。

说些题外话,能直接sql的不要用动态sql.

2011年5月27日 11:20
0 0

要自定义数组类型

2011年5月26日 19:20

相关推荐

Global site tag (gtag.js) - Google Analytics