我在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
不会返回错误。我可以调用或使用任何属性或方法来引发来自THROW
的错误吗?我无权修改stored procedure
,因此我必须在应用程序级别捕获异常。