的OracleParameter和IN子句 [英] OracleParameter and IN Clause

查看:1124
本文介绍了的OracleParameter和IN子句的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有没有办法将参数添加到使用System.Data.OracleClient的IN子句。

例如:

 查询字符串=SELECT * FROM表名其中用户名IN(:PRAM);
的OracleCommand命令=新的OracleCommand(查询,康涅狄格州);
command.Parameters.Add(:婴儿车,OracleType.VarChar).value的='奔','山姆';
 

解决方案

您可以更轻松地做到这一点的 ODP.NET

  1. 创建一个 TABLE 键入你的数据库:

      CREATE TYPE t_varchar2为VARCHAR2表(4000);
     

  2. 创建集合参数:

     的OracleParameter参数=新的OracleParameter();
    param.OracleDbType = OracleDbType.Varchar2;
    param.CollectionType = OracleCollectionType.PLSQLAssociativeArray;
     

  3. 填写参数:

     参数=新的字符串[2] {奔,萨姆};
     

  4. 参数为以下查询绑定:

      SELECT * FROM表名其中用户名(表(CAST(:参数AS t_varchar2)));
     

Is there a way to add a parameter to an IN clause using System.Data.OracleClient.

For example:

string query = "SELECT * FROM TableName WHERE UserName IN (:Pram)";
OracleCommand command = new OracleCommand(query, conn);
command.Parameters.Add(":Pram", OracleType.VarChar).Value = "'Ben', 'Sam'";

解决方案

You can do it more easily with ODP.NET:

  1. Create a TABLE type in your database:

    CREATE TYPE t_varchar2 AS TABLE OF VARCHAR2(4000);
    

  2. Create a collection parameter:

    OracleParameter param = new OracleParameter();
    param.OracleDbType = OracleDbType.Varchar2;
    param.CollectionType = OracleCollectionType.PLSQLAssociativeArray;
    

  3. Fill the parameter:

    param = new string[2] {"Ben", "Sam" };
    

  4. Bind the parameter to the following query:

    SELECT * FROM TableName WHERE UserName IN (TABLE(CAST(:param AS t_varchar2)));
    

这篇关于的OracleParameter和IN子句的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆