using (var command = new OracleCommand(sqlText, oraConnection) { CommandType = CommandType.StoredProcedure })
{
command.BindByName = true;
var parameters = command.Parameters;
parameters.Clear();
parameters.Add("p_date", OracleDbType.Date, ParameterDirection.Input).Value = DateTime.Now;
command.ExecuteNonQuery();
}
这是我在VS15中的代码。我正在尝试执行存储过程并将我唯一的参数作为日期传递。
create or replace procedure cwi_pat_deductions_export
(
:p_date date
)
is
v_count number;
这是存储过程的开始。我在第1行第7行收到Oracle错误:ORA-06550(所以在#34之后;创建")。我不是一个交易sql dev,所以我很难看到错误在哪里。我不觉得它在我的最后(c#侧)但它很可能(我们的sql开发人员坚持认为它一定是我的问题,因为存储的proc在PlSql Developer中编译并运行良好)。 p>
您是否不允许使用Create或replace启动存储过程?我认为这是标准的。
答案 0 :(得分:2)
如果要调用它,则不会传递过程的完整CREATE OR REPLACE PROCEDURE ...
文本。 存储的过程的要点是它已存储在数据库中。
如果要调用存储过程,sqlText
参数应该只是存储过程名cwi_pat_deductions_export
。如果这不起作用,并且您收到invalid identifier
错误,请尝试在名称前加上存储过程的所有者,例如some_schema.cwi_pat_deductions_export
。