【发布时间】:2015-06-30 19:47:05
【问题描述】:
我在 Oracle 中编写了这个程序:
create or replace
PROCEDURE P1
(
ID_1 IN NUMBER
, P_NAME OUT VARCHAR2
) AS
BEGIN
-- INSERT INTO A1 (ID, NAME_) VALUES (ID_1,'6666');
SELECT NAME_ into p_name FROM A1 WHERE ID=ID_1;
END P1;
并在 c# 中编写了这段代码以运行该过程:
cmd.Connection = conn;
cmd.CommandText = "P1";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("ID_1", 88);
cmd.Parameters.Add("p_name", OracleType.VarChar, 16).Direction = ParameterDirection.ReturnValue;
cmd.Connection.Open();
cmd.ExecuteNonQuery();
Console.WriteLine(cmd.Parameters["p_name"].Value.ToString());
cmd.Connection.Close();
但是当我运行 c# 应用程序时,我得到了这个错误:
Unhandled Exception: System.Data.OracleClient.OracleException: ORA-06550: line 1 , column 18: PLS-00306: wrong number or types of arguments in call to 'P1' ORA-06550: line 1, column 7: PL/SQL: Statement ignored
发生了什么?
【问题讨论】:
-
ParameterDirection.Output不是ParameterDirection.ReturnValue您还使用ExecuteNonQuery和查询 (SELECT) -
@AlexK。谢谢你,我的朋友,它的工作!请发布你的解决方案来投票给你的帖子。
标签: c# oracle stored-procedures