首页 > 解决方案 > SQL Server 存储过程不会引发异常

问题描述

我有一个存储过程,SQL Server 2017它在表中插入一行:

CREATE PROCEDURE [dbo].[insertsomething]
AS
BEGIN
BEGIN TRY
... #insert statement here
END TRY
BEGIN CATCH
    SELECT 'Failed'
    THROW;
END CATCH
END

使用 调用该insertsomething过程时pyodbc.execute,我仅fetchone()使用cursor.

try:
    cursor = connection.cursor()
    cursor.execute('{CALL dbo.insertsomething (?, ? ...)}', params)
    result = cursor.fetchone()[0]
except Exception as e:
    raise

调用nextset不会引发错误。由于第一个结果集,它似乎THROW不会返回错误。是否有任何属性或方法可以调用或使用来引发来自的错误?我没有修改我们的权限,所以我必须在应用程序级别捕获异常。THROWstored procedure

标签: sql-serverpython-3.6pyodbc

解决方案


推荐阅读