如何在SQL查询中使用Oracle关联数组
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范例.) (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |