【发布时间】:2015-09-01 11:31:24
【问题描述】:
我的 oracle 函数中有一个参数,我想将 null 传递给它,
我所做的是:
cmd.Parameters.AddWithValue("al_acc_br", DBNull.Value);
但是,我收到了 the number of parameters or the type is not correct 的错误消息,如您所知,我们无法从 .net 库中看到实际查询
这个数字是绝对正确的,但是以我调试问题的方式我想问你我是否正确传递了 null
谢谢
更新
一些代码
using (OracleConnection cn = new OracleConnection(OracleConnString(oracleHost, oraclePort, oracleServiceName, oracleUsername, oraclePassword)))
{
OracleDataAdapter oda = new OracleDataAdapter();
OracleCommand cmd = new OracleCommand();
cmd.Connection = cn;
cmd.CommandText = oracleSchema + "." + oracleFunction;
cmd.CommandType = CommandType.StoredProcedure;
fillParameters(cmd);
oda.SelectCommand = cmd;
我知道我正在使用已弃用的库,但这对我们来说很好
更新 2
我的 oracle 函数中的参数有以下类型:
Varchar(8), Varchar(40), Numeric(4), Numeric(6), Varchar(35), Numeric(3), Date, Numeric(20,6), Datetime
而我所做的是:
对于所有varchar(x),我将它们作为字符串从 c# 插入
对于所有numeric(x),我将它们从 c# 插入为整数
对于所有numeric(x,y),我将它们从 c# 插入为双精度
对于所有Date 和Datetime,我将它们插入如下:
cmd.Parameters.AddWithValue("as_date_time", DateTime.Now.ToString("dd/MMM/yyyy"));//'18/MAY/2015'
请问我错了吗?
【问题讨论】:
-
完整的命令是什么?以及如何在实际命令文本中定义参数
-
请同时提供错误的完整堆栈跟踪。
-
根据this answer DBNull.Value 应该完全没问题。让我相信@Habib 可能会对您的命令对象或过程本身有所了解。
-
@Habib 我添加了代码
-
@MarcoDinatsoli,proc 中的参数是如何定义的,您可以粘贴代码的特定部分吗?看起来像是一个小错字...,因为
DBNull.Value应该适用于空值