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;
}