加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

如何在SQL查询中使用Oracle关联数组

发布时间:2021-01-16 16:04:57 所属栏目:编程 来源:网络整理
导读:ODP.Net果真了将关联数组作为参数从C#转达到Oracle存储进程的手段.除非您实行在sql查询中行使该关联数组中包括的数据,不然它是一个很好的成果. 缘故起因是它必要上下文切换 – SQL语句必要SQL范例,而且转达到PL / SQL的关联数组现实上界说为PL / SQL范例.我信托在

ODP.Net果真了将关联数组作为参数从C#转达到Oracle存储进程的手段.除非您实行在sql查询中行使该关联数组中包括的数据,不然它是一个很好的成果.

缘故起因是它必要上下文切换 – SQL语句必要SQL范例,而且转达到PL / SQL的关联数组现实上界说为PL / SQL范例.我信托在PL / SQL包/进程/函数中界说的任何范例都是PL / SQL范例,而在这些工具之外建设的范例是SQL范例(假如你能提供更清楚的那些,请做但不是它的方针)题).

以是,题目是,您将行使什么要领将PL / SQL关联数组参数转换为进程中可以在sql语句中行使的要领,如下所示:

OPEN refCursor FOR
SELECT T.*
FROM   SOME_TABLE T,( SELECT COLUMN_VALUE V
         FROM   TABLE( associativeArray )
       ) T2
WHERE  T.NAME = T2.V;

出于此示例的目标,“associativeArray”是由PLS_INTEGER索引的varchar2(200)的简朴表.在C#中,associativeArry参数添补了字符串[].

除了行使关联数组之外,请随意接头其他要领,但提前知道这些办理方案将不被接管.不外,我有乐趣看到其他选择.

办理要领

我会建设一个这样的数据库范例:
create type v2t as table of varchar2(30);
/

然后在措施中:

FOR i IN 1..associativeArray.COUNT LOOP
    databaseArray.extend(1);
    databaseArray(i) := associativeArray(i);
END LOOP;

OPEN refCursor FOR
SELECT T.*
FROM   SOME_TABLE T,( SELECT COLUMN_VALUE V
         FROM   TABLE( databaseArray )
       ) T2
WHERE  T.NAME = T2.V;

(个中databaseArray声明为v2t范例.)

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读