oralce 数据类型

在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;

2个回答

你这个需求很难实现,说下原因,
存放多个类型的数组可以通过自定义类型实现
[code="sql"]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;[/code]

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

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

要自定义数组类型

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐