通过ODBC调用SQL Server存储过程失败,留下空表

时间:2010-02-18 03:05:37

标签: sql-server c odbc

我们在Linux上使用C语言的ODBC。我们可以使用ODBC为SQL Server 2008和MySQL成功执行直接语句(“INSERT ...”,“SELECT ...”等)。我们正在迁移到存储过程,所以我们首先开发了MySQL存储过程。使用ODBC调用MySQL存储过程。生活很美好。

存储过程被转换为T-SQL。我们通过直接从Visual Studio执行查询来验证它们的功能。数据库已填满,查询工作。好哇。

我们有一个测试程序,允许我们使用MySQL或SQL Server,直接执行或调用存储过程。我们从C测试程序中调用T-SQL存储过程。日志输出表明表正在填充数据,查询正在运行等。直到最后,语句失败。程序退出(比正常时间长几秒)。其他3个案例工作(直接MySQL,直接SQL Server,存储proc MySQL)。

我们检查SQL Server数据库。它是空的。我们打开了自动提交,所以我不认为这是一个提交问题。存储的proc很简单,是直接SQL的副本。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

听起来好像查询正在运行 - 然后由于某种原因出错,并且所有内容都被包装为单个事务 - 并回滚。因此空表。

存储过程中是否有任何错误捕获? SQL Server 2005及更高版本使用TRY .. CATCH。

极大地改进了错误处理