如何在SQL查询中使用Oracle关联数组
发布时间:2020-12-12 05:59:15 所属栏目:MsSql教程 来源:网络整理
导读: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类型.) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Sqlserver 中使用事务的举例
- TD 安装遇到的问题与使用TD时遇到的问题
- 数据库 – 零停机时间(或接近零)数据库模式更改
- SQLServer2000的"以前的某个程序安装已在安装计算机上创
- 如何将sqlserver表中的数据导出sql语句或生成insert into语
- sql-server – 如何在SQL Server查询中显示表结构?
- 第一篇博文 完全用来记录自己学习过程中遇到的问题
- sql – Laravel Eloquent ORM“whereHas”通过表
- sqlserver中将varchar类型转换为int型再进行排序的方法
- SQLSERVER 链接 MYSQL 的 两种方法 连接