www88485400 2011-05-26 16:52
浏览 209
已采纳

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条回答 默认 最新

  • iteye_8576 2011-05-27 11:20
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 matlab有关常微分方程的问题求解决
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?
  • ¥100 求三轴之间相互配合画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考