所以我问这个是为了看看这是否在 SQL 中是可能的。
我目前正在为一个 VB.Net 应用程序编写一些存储过程,我正在使用它与我的数据库中的数据进行交互。
我正在创建一个程序来删除一组记录,但想知道程序本身是否可以要求确认该项目将被删除。类似于消息提示或程序暂停以等待进一步输入的内容。
如果这不可行,我知道如何在 VB.Net 端管理它,我只是想在数据库本身中保留尽可能多的 SQL 和数据库内容。
简短的回答是,存储过程在执行后无法提示接受输入以在事务中使用。
您可以做的是使用存储过程来获取计数或您要验证的值。基于此,您可以在代码中使用逻辑函数,然后调用执行操作的第二个存储过程。
同样,此 IF ELSE 逻辑可以合并到程序中。假设您要从值 = 1 的表中删除所有记录,您希望删除 50 次。您可以调用存储过程并输入值 50,它会运行:
SELECT COUNT(*) FROM TABLE WHERE Value = 1
Run Code Online (Sandbox Code Playgroud)
您可以进行验证以说明计数大于、小于或等于 50,然后它可以调用另一个过程并将另一个参数传递给它,这可能是一个删除过程,或者它可能只是结束操作。
我通常反对菊花链存储过程,但我喜欢将业务逻辑保留在应用程序中,因此我建议在 VB 中处理它。
您可以合理地得出的最接近的是存储过程需要事务。例如
if @@trancount = 0 throw 50001, 'A transaction is required to run this procedure', 10
Run Code Online (Sandbox Code Playgroud)
然后应用程序必须在运行存储过程后显式提交更改。