node.js - 有什么方法可以识别 NodeJS 中的 SQL Server 存储过程返回的错误
问题描述
场景:执行存储过程将行插入表中
输出:正常,应该按照 SQL 语句中的设置插入记录
失败案例:如果违反了唯一键,它不应该更新并抛出错误
在 Azure Studio 中手动执行时,上述所有步骤均有效。使用 ASYNC 调用与 NodeJS 集成时也是如此,它仅适用于 +ve 测试用例;这是插入的新记录,当插入重复记录时,recordset.length 被视为未定义
这个 undefined 在6.3.1中可见,在6.2.3的早期版本中不可见
现在在6.3.1中,我只能找到使用returnValue的选项。有谁知道其他可用于获取错误通知的功能。下面是输出
如果成功,我得到的结果为
{
recordsets: [],
recordset: undefined,
output: {},
rowsAffected: [],
returnValue: 0
}
解决方案
您可以尝试将您的 INSERT/UPDATE 放在 TRY-CATCH 块中,然后返回一个特定的整数 ir 一个 RAISE ERROR。此外,将它放在事务上以在 CATCH 块上回滚。
推荐阅读
- regex - Sigil 编辑器:正则表达式字符串在文本中查找(连字符)字符,但不是 html 属性
- python - 在 grpc python 上创建通道时,我得到 inActive 通道异常
- javascript - Uniswap JS SDK 和 Ethers js 试图将 eth 换成代币
- r - 尝试将文本添加到绘图时,我的哑铃图中的奇怪行为(变量重复)
- spring-boot - 春天:@bean CommandlineRunner。它如何返回 CommandlineRunner 类型的对象
- selenium - org.openqa.selenium.WebDriverException:未知错误:由于页面崩溃而删除了会话
- c++ - 变量如何包含在内存地址中
- python - 在不和谐机器人 discord.py 上输入角色时出错
- r - 如何在 R 中创建一个水平条形图,根据 x 轴上的附加变量在中间拆分?
- python - 我无法通过循环在实时数据库中创建新孩子