Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 来自.net的oracle函数类型参数错误_C#_.net_Oracle - Fatal编程技术网

C# 来自.net的oracle函数类型参数错误

C# 来自.net的oracle函数类型参数错误,c#,.net,oracle,C#,.net,Oracle,这是我的代码(出于安全原因,我试图更改名称) 还有这些 cmd.Parameters.AddWithValue("M1", "24234234234").OracleType = OracleType.VarChar; cmd.Parameters.AddWithValue("N1", DateTime.Now.ToString("dd/MMM/yyyy")).OracleType = OracleType.DateTime;//'18/MAY/2015'

这是我的代码(出于安全原因,我试图更改名称)

还有这些

  cmd.Parameters.AddWithValue("M1", "24234234234").OracleType = OracleType.VarChar;
                cmd.Parameters.AddWithValue("N1", DateTime.Now.ToString("dd/MMM/yyyy")).OracleType = OracleType.DateTime;//'18/MAY/2015'
                cmd.Parameters.AddWithValue("O1", DateTime.Now.ToString("dd/MMM/yyyy")).OracleType = OracleType.DateTime;
这些参数的实际类型为:

A Numeric(2)
B Varchar(8)
C Varchar(40)
D Numeric(4)
E Numeric(4)
F Numeric(4)
G Numeric(6)
H Numeric(3)
I Numeric(1)
J Varchar(1)
K Varchar(35)
L Numeric(4)
M Numeric(3)
N Numeric(6)
O Numeric(8)
P Numeric(3)
Q Numeric(4)
R Numeric(3)
S Numeric(6)
T Numeric(8)
U Numeric(3)
V Varchar(35)
W Numeric(20,6)
X Varchar(3)
Y Varchar(255)
Z Numeric(1)
A1 Varchar(80)
B1 Varchar(80)
C1 Varchar(5)
D1 Varchar(50)
E1 Numeric(4)
F1 Numeric(4)
G1 Varchar(40)
H1 Varchar(40)
I1 Varchar(40)
J1 Varchar(40)
K1 Numeric(4)
L1 Varchar(1)
M1 Varchar(35)
N1 Datetime
O1 Date
我得到一个错误:

ORA-06550: line 1, column 7:
PLS-00306: wrong number or types of arguments in call to 'my function name'
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored

我在运行时打印参数的数量,它是41(正确),因此错误的是这些类型之一。请帮忙,我已经尝试了两天来解决它,但还没有成功。

查看您的代码,您缺少一个参数,并且其中一个参数的类型错误

“D1”是缺少的部分,“p”是不正确的类型(根据您的参数列表),因此应将其更改为:

 if (string.IsNullOrWhiteSpace(ConfigurationManager.AppSettings["P"].ToString()))
    {
        cmd.Parameters.AddWithValue("P", DBNull.Value).OracleType = OracleType.VarChar;
    }
为此:

 if (string.IsNullOrWhiteSpace(ConfigurationManager.AppSettings["P"].ToString()))
    {
        cmd.Parameters.AddWithValue("P", DBNull.Value).OracleType = OracleType.Number;
    }

@很抱歉,代码已经在客户端中了,我只是对真正的功能做了一些改进。不是我写的itA函数,它接受41个参数,一开始似乎是一个相当糟糕的设计。您需要发布函数的签名,以便我们能够猜测哪个参数不正确。我想你在过去两天的某个时候做过这件事。假设它不是显而易见的,并且假设您无法修复函数签名,我强烈建议构建一个简单的案例并进行迭代。您能否创建一个不执行任何操作、接受1个参数并调用该参数的函数?如果可以,那么您可以慢慢添加参数,直到您确定您的问题。@JustinCave抱歉,我不能这样做,此功能已经在客户机(客户端)中,我已经改进了该功能的内部功能,我甚至没有访问oracle server的权限,只有oracle客户端,我知道这是一个糟糕的设计,但这是业务,正如你所知,客户有时可能是过时的,我们必须在没有看到函数签名的情况下处理这些问题,实际上没有人能帮上什么忙。是的(显然)。如果有
out
参数,则需要在调用中提供这些参数。然而,就目前而言,我们无法帮助您,因为我们不知道您的函数的实际签名是什么。我已经发现
P
错误,它仍然给我相同的错误(在更正后),但我发现代码只提供了in参数,我是否也应该指定out参数?对于D1,它只是试图隐藏实际名称时的一种类型,如果该方法没有其他重载,那么是的。您还应该指定out参数。
 if (string.IsNullOrWhiteSpace(ConfigurationManager.AppSettings["P"].ToString()))
    {
        cmd.Parameters.AddWithValue("P", DBNull.Value).OracleType = OracleType.Number;
    }