MSDAORA Sql的参数传递方法
MSDAORA及Oracle .NET Framework 数据提供程序。Oracle .NET Framework 数据提供程序支持使用 Oracle 客户端软件提供的 Oracle 调用接口 (OCI) 访问 Oracle 数据库。该数据提供程序设计的功能与 SQL Server、OLE DB 和 ODBC 的 .NET Framework 数据提供程序的功能类似。要使用 Oracle .NET Framework 数据提供程序,应用程序必须如下所示引用 System.Data.OracleClient 命名空间。
使用Sql形式如下:
INSERT INTO TS_ITEM(ITEM_CD) VALUES(:ITEM_CD)
SELECT ITEM_CD FROM TS_ITEM WHERE ITEM_CD BETWEEN :ITEMFROM AND :ITEMTO
Sql中的【:ITEM_CD,:ITEMFROM,:ITEMTO】这些特殊的参数名就是MSDAORA的参数传递特点。
1:参数名不区分大小写。
2:SQL 语句传递参数时不支持问号 (?) 占位符,必须使用命名的参数。
3:SQL 语句中使用命名的参数时,参数名前面必须有一个冒号 (:)。在存储过程或在代码的其他地方引用命名的参数时(例如,将 OracleParameter 对象添加到 Parameters 属性时),请不要在命名的参数前加上冒号 (:)。数据提供程序会自动提供冒号。
4:OracleParameters集合中参数的数量必须等于命令文本中命名参数的数量,否则用于 Oracle 的 .NET Framework 数据提供程序会引发错误。
应用举例:
/// <summary> ///参数追加 /// </summary> /// <param name="valName">参数名</param> /// <param name="var">参数値</param> /// <param name="valType">参数类型</param> public static void AddDbParameter(string valName, object var, OracleType valType) { OracleParameter p = new OracleParameter(); p.ParameterName = valName; p.Direction = ParameterDirection.Input; p.OracleType = valType; p.IsNullable = true; p.Value = var; DbCommand.Parameters.Add(p); }
/// <summary> /// 数据取得 /// </summary> /// <param name="i_ItemFrom">項目From</param> /// <param name="i_ItemTO">項目To</param> /// <returns></returns> public static DataTable GetData(string i_ItemFrom, string i_ItemTO) { MsOracleParModel.PreProcess(); MsOracleParModel.PrepareDbSql(DBSql.MsORASelSql); MsOracleParModel.AddDbParameter("ITEMFROM", i_ItemFrom, OracleType.VarChar); MsOracleParModel.AddDbParameter("ITEMTO", i_ItemTO, OracleType.VarChar); return MsOracleParModel.GetDataSet("M_ITEM").Tables[0]; }
存储过程也是如此使用,只是CommandType不一样而已。
DbCommand.CommandType = CommandType.StoredProcedure;
优点:1,在缓存没清除的情况下,此Sql数据库只需解析一次,再次执行此Sql时速度将更快。
2,传入参数顺序没要求,只要名字对应上就可以。
缺点:1,数据类型和Oracle数据库有些不一致。
2,速度比不过ODP。
其他缺点等大虾提供了。
附上此DBHelper(精简版):