ODBC调用存储过程

Posted

技术标签:

【中文标题】ODBC调用存储过程【英文标题】:ODBC call stored procedure 【发布时间】:2021-12-16 01:08:29 【问题描述】:

我正在尝试调用存储过程,但我不太了解 ASP.NET 语法。

项目使用:

ASP.NET Core Web API ODBC 连接 没有实体框架
OdbcConnection connection = new OdbcConnection(ConnectionString());
OdbcCommand ODBCCommand = new OdbcCommand("sp_insert_booking", connection);
ODBCCommand.CommandType = CommandType.StoredProcedure;
ODBCCommand.Parameters.AddWithValue("@project", "");

connection.Open();
ODBCCommand.ExecuteNonQuery();

例外

Exception has occurred: CLR/System.Data.Odbc.OdbcException
An exception of type 'System.Data.Odbc.OdbcException' occurred in System.Data.Odbc.dll but was not handled in user code: 'ERROR [HY000] [ODBC InterBase Driver][InterBase]Dynamic SQL Error
SQL error code = -104
Token unknown - line 1, char 0
sp_insert_booking'

我的问题是在项目结构中定义/创建spInsertBooking 的位置。

【问题讨论】:

存储过程驻留在数据库中。您的问题与创建或调用存储过程有关吗?如果您想调用现有的,CommandText 属性应该是存储过程的名称,在您的情况下为OdbcCommand ODBCCommand = new OdbcCommand("spInsertBooking"); 你在后台使用什么数据库?为什么ODBC - 似乎很传统,通常不是最佳选择... 我之前的评论忘记了连接参数,所以应该是OdbcCommand ODBCCommand = new OdbcCommand("spInsertBooking", connection); @marc_s InterBase 请添加完整的异常详细信息,但您可能需要打开连接,在显示代码中您不这样做。在声明和实例化连接后添加connection.Open(); 【参考方案1】:

尝试使用这样的东西:

OdbcCommand ODBCCommand = new OdbcCommand("EXECUTE PROCEDURE spInsertBooking", connection);

或以下,如果spInsertBooking 命令需要参数:

OdbcCommand ODBCCommand = new OdbcCommand("EXECUTE PROCEDURE spInsertBooking 1001, 1002, 1003", connection);

(项目以逗号分隔;使用单引号分隔字符串。)

更多信息可以在the InterBase documentation找到。

【讨论】:

以上是关于ODBC调用存储过程的主要内容,如果未能解决你的问题,请参考以下文章

php pdo & iSeriesAccess ODBC - 使用 OUT 参数调用存储过程不起作用

关于jdbc调用存储过程的问题

多个返回值的 ODBC 调用语法

如何从 Perl 调用 Informix 存储过程?

MySQL ODBC 存储过程结果缺少列

SQL 2005 存储过程结果集的 ODBC 执行/获取不能使用表 @variable