在 Dapper 中调用 Oracle 存储过程
Calling an Oracle stored procedure in Dapper
我有一个应用程序通过传递一个字符串和字符串中的参数来调用 Oracle 存储过程,即
string Query = "CALL MySP(" + Variable1 + ", " + Variable2 + ")";
这有效,或者至少我上次尝试时有效。
我需要使用 DynamicParameters
重写查询。
但是,当我执行 Execute(Query, Parms, commandType: CommandType.StoredProcedure)
时,出现错误。
这是我尝试过的一个例子:
using(OracleConnection conn = new OracleConnection(myConnectionString)
{
string Query = "CALL MySP(:Var1, :Var2)";
DynamicParameters parms = new DynamicParameters();
parms.Add("Var1", Variable1, DbType.String, ParameterDirection.Input);
parms.Add("Var2", Variable2, DbType.String, ParameterDirection.Input);
var results = connection.Execute(Query, parms, commandType: CommandType.StoredProcedure);
}
当我用上面的查询 运行 时,我得到这个错误:
ORA-06550: line 1, column 12:
PLS-00103: Encountered the symbol "MySP" when expecting one of the following:
:= . ( @ % ;
The symbol ":=" was substituted for "MySP" to continue.
如果我删除 CALL 语句:
Query = "MySP(:Var1, :Var2);
然后我收到此错误消息:
ORA-01008: not all variables bound
谁能看出我做错了什么?
问题是我一直关注等式的 C# 和 Dapper 方面。我们的 Oracle DBA 设置了存储过程的权限,它 运行.
但是我无法告诉 Dapper CommandType 是存储过程,我调用存储过程的字符串必须如下所示:
string Query = "CALL MySP(:Var1, :Var2)";
如果我删除“CALL”,我会收到错误消息。如果我将“commandType:CommandType.StoredProcedure”添加到 Dapper Execute 函数,我会遇到绑定错误。
我们的 DBA 说他将进一步研究它,看看他能找到什么,以便我们可以使用 Execute 函数中的 CommandType.StoreProcedure 参数调用存储过程。
我有一个应用程序通过传递一个字符串和字符串中的参数来调用 Oracle 存储过程,即
string Query = "CALL MySP(" + Variable1 + ", " + Variable2 + ")";
这有效,或者至少我上次尝试时有效。
我需要使用 DynamicParameters
重写查询。
但是,当我执行 Execute(Query, Parms, commandType: CommandType.StoredProcedure)
时,出现错误。
这是我尝试过的一个例子:
using(OracleConnection conn = new OracleConnection(myConnectionString)
{
string Query = "CALL MySP(:Var1, :Var2)";
DynamicParameters parms = new DynamicParameters();
parms.Add("Var1", Variable1, DbType.String, ParameterDirection.Input);
parms.Add("Var2", Variable2, DbType.String, ParameterDirection.Input);
var results = connection.Execute(Query, parms, commandType: CommandType.StoredProcedure);
}
当我用上面的查询 运行 时,我得到这个错误:
ORA-06550: line 1, column 12:
PLS-00103: Encountered the symbol "MySP" when expecting one of the following:
:= . ( @ % ;
The symbol ":=" was substituted for "MySP" to continue.
如果我删除 CALL 语句:
Query = "MySP(:Var1, :Var2);
然后我收到此错误消息:
ORA-01008: not all variables bound
谁能看出我做错了什么?
问题是我一直关注等式的 C# 和 Dapper 方面。我们的 Oracle DBA 设置了存储过程的权限,它 运行.
但是我无法告诉 Dapper CommandType 是存储过程,我调用存储过程的字符串必须如下所示:
string Query = "CALL MySP(:Var1, :Var2)";
如果我删除“CALL”,我会收到错误消息。如果我将“commandType:CommandType.StoredProcedure”添加到 Dapper Execute 函数,我会遇到绑定错误。
我们的 DBA 说他将进一步研究它,看看他能找到什么,以便我们可以使用 Execute 函数中的 CommandType.StoreProcedure 参数调用存储过程。