我有一个存储过程叫做
GET_CLIENT(IN VARCHAR2, IN VARCHAR2, OUT SYS REF_CURSOR)
我试图将它们的结果存储在ConnectAndQuery
数据表中。
它会导致以下错误:
系统。数据。Odbc。ORA-00900:无效的SQL语句
在ConexionBD.ConnectAndQuery(stringlayername、decimalidelemento、stringidelementostring、stringconexion)。
我的代码:
public DataTable ConnectAndQuery(string layerName, decimal idElemento, string idElementoString, string conexion)
{
Logger.Debug("App_Code/ConexionBD.cs: using (OdbcConnection connection = new OdbcConnection(Driver={Microsoft ODBC for Oracle}; + conexion ");
using (OdbcConnection conn = new OdbcConnection(conexion))
{
try
{
using (OdbcCommand Command = new OdbcCommand("{ call PKG_GEONET_REPORTS.GET_ORDINARY_CLIENT(?, ?, ?) }", conn))
{
Command.CommandType = CommandType.StoredProcedure;
Command.Parameters.Add("client_in", OracleType.VarChar).Value = idElemento.ToString();
Command.Parameters.Add("layer_in", OracleType.VarChar).Value = layerName;
Command.Parameters.Add("client_data", OracleType.Cursor).Direction = ParameterDirection.Output;
using (OdbcDataAdapter da = new OdbcDataAdapter(Command))
{
DataTable dt = new DataTable();
da.Fill(dt);
return dt;
}
}
}
catch (Exception ex)
{
throw (ex);
}
}
}
在命令中更改SQL文本。
da.SelectCommand = new OdbcCommand(
"{ call PKG_NAME.GET_CLIENT(?, ?, ?) }",
conn);
OracleType。VarChar
来匹配您的存储过程第一个参数DataType,不应该吗?da.Fill(ds);应使用
代替da。填充(ds,RESULT_NAME?);
如果您不知道结果集的名称。问题内容: 我试图在postgres 9.3上使用sql调用函数内的函数。 这个问题与我的另一篇文章有关。 我写了下面的函数。到目前为止,我还没有合并任何类型的save-output(COPY)语句,因此我试图通过创建嵌套函数print-out函数来解决此问题。 以上功能有效。 尝试创建嵌套函数。 调用嵌套函数。 输出 上面给出了这个。但是,当在print_out()中将arg1,arg2替换为’
问题内容: 我在任何地方都找不到此答案,但是可以从MySQL中的另一个存储过程调用存储过程吗?我想找回标识值,并在父存储过程中使用它。我们不能再使用FUNCTIONS! 问题答案: 参数应该可以帮助您将值返回给调用过程。基于此,解决方案必须是这样的。
数据访问层支持存储过程调用,调用数据库存储过程使用下面的方法: $resultSet = Db::query('call procedure_name'); foreach ($resultSet as $result) { } 存储过程返回的是一个数据集,如果你的存储过程不需要返回任何的数据,那么也可以使用execute方法: Db::execute('call procedure_name'
问题内容: 我有一个MYSQL存储过程SP1(),它返回一个结果集。 我想在SP2()内部调用SP1()并遍历SP1()的结果集以执行一些其他工作。 我不想从SP1()中包含我的逻辑,因为这会使SP2()过于复杂。 有什么建议么? 谢谢。 问题答案: 您想做的事情听起来并不是特别好,也许您应该考虑重新设计这两个过程。但是,您可以执行以下操作来快速解决此问题: 使您的sp2 sproc将其中间结果写
我使用JDBC这样调用这个过程: 它向我抛出一个错误,通知调用格式错误。 但是如果我像这样直接在IDE中运行调用:
从1.r.58开始, 支持出参, 之前的版本仅支持入参. 从实现方式上说, 是通过扩展自定义SQL的含义及上下文来实现 仅含义入参的存储过程 // 建表,删除老的存储过程. dao.create(Pet.class, true); dao.insert(Pet.create("wendal")); dao.execute(Sqls.create("DROP PRO