在Oracle中使用字符串数组参数
来源:互联网 发布:电脑怎么连接网络 编辑:程序博客网 时间:2024/04/26 11:08
今天在项目中需要使用一个字符串数组参数,其实本来打算在cs文件中拼接字符串的,不过leader说可以在Oracle中使用数组参数,所以就看看了……
其具体过程如下:
1、需要的类的命名空间:
A、Oracle.DataAccess.Client
B、Oracle.DataAccess.Types
2、数据库包中定义如下:
TYPE t_cursor is ref cursor; -- 游标
TYPE AssocArrayVarchar2_t is table of VARCHAR2(100) index by BINARY_INTEGER; --数组参数类型
3、存储过程如下:
- PROCEDURE GetOrgInforResults(shortname varchar2,strOrg IN AssocArrayVarchar2_t,g_cursor out t_cursor )
- as
- v_str varchar2(200);
- v_str2 varchar2(2000);
- begin
- v_str:= 'select og_id,og_name from orginfor where isuse=''1''
- and og_id in ( ';
- FOR i IN 1..strOrg.count LOOP
- if(i = strOrg.count)then
- v_str2:=v_str2||''''||strOrg(i)||'''';
- else
- v_str2:=v_str2||''''||strOrg(i)||''',';
- end if;
- END LOOP;
- v_str:=v_str||v_str2||' ) group by og_id,og_name';
- open g_cursor for v_str;
- end;
4、调用代码如下:
- public static DataSet GetOrgInforByName(string orgName, string[] strOrg, string tableName)
- {
- Oracle.DataAccess.Client.OracleParameter[] param = new Oracle.DataAccess.Client.OracleParameter[3];
- param[0] = new Oracle.DataAccess.Client.OracleParameter("shortname", OracleDbType.Varchar2, 14);
- param[0].Value = orgName;
- param[1] = new Oracle.DataAccess.Client.OracleParameter("strOrg", OracleDbType.Varchar2, strOrg.Length);
- param[1].CollectionType = OracleCollectionType.PLSQLAssociativeArray;
- param[1].Value = strOrg;
- param[1].Direction = ParameterDirection.Input;
- param[2] = new Oracle.DataAccess.Client.OracleParameter("tableName", OracleDbType.RefCursor);
- param[2].Direction = ParameterDirection.Output;
- DataSet ds = OracleHelper_Assess.ExecuteDataSet(OracleProvider.connectionStringWithConfig, CommandType.StoredProcedure,
- GetOrgInforResult,tableName,
- param);
- return ds;
- }
这里仿照了微软的OracleHelper制作了一个自定义的类:OracleHelper_Assess,里面的方法是一样的。
过程其实和Oracle提供的案例差不多,只是使用完毕之后才发觉拼接字符串的过程从cs文件中转移到了存储过程中,不晓得这样是不是提高了代码的效率……
另外,就是本来打算在空间里定义一个类型的:create or replace type AssocArrayVarchar2 is table of varchar2(100);但是这样做了之后发现调用的事后,会报异常【参数的个数或者类型不正确】,最后是将这个类型放入包头中定义,原因未知……
- 在Oracle中使用字符串数组参数
- 在COM中使用数组参数--概述
- 在COM中使用数组参数-SafeArray
- 在COM中使用数组参数-ICollection
- 在COM中使用数组参数-SafeArray
- 在COM中使用数组参数-SafeArray
- 在COM中使用数组参数
- 在COM中使用数组参数-SafeArray
- 在COM中使用数组参数--概述
- 在COM中使用数组参数-ICollection
- 在COM中使用数组参数-SafeArray
- 在COM中使用数组参数-SafeArray
- 在COM中使用数组参数-SafeArray
- 在COM中使用数组参数-SafeArray
- 在ORACLE存储过程中使用数组
- 在ORACLE存储过程中使用数组 .
- 在COM中使用数组参数-数组指针
- 在COM中使用数组参数-数组指针
- 程序员!
- 软件工程师不可不知的10个概念
- 按键值列表
- 什么是Hibernate
- enum枚举类型与union联合类型
- 在Oracle中使用字符串数组参数
- Bluez D-Bus Architecture
- 质数(也叫素数)判断
- 关于ImageMagick
- 解决 "GStreamer 遇到了常规流错误"问题
- 最小生成树Prim算法
- Javascript 操作select控件大全(新增、修改、删除、选中、清空、判断存在等)
- 金山系列下载-金山词霸和金山快译2009破解版
- 电脑屏幕视力保护色