因此,我要跟踪我负责的同步过程中的潜在错误(由其他人编写)。当查看正在调用的存储过程之一时,我注意到一些特殊的东西。根据我对退货的理解,退货后的任何内容都不会退回。但是,如果在SQL中就是这种情况,我不是肯定的。基于下面的SQL块,delete语句是否会运行?或者SP是否返回信息以表示是否删除了行(例如行数,是否成功等)?我假设这是SP中的一个错误,但想要在采取行动之前确认。提前谢谢。
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[DeleteSalesforce_Contacts]
AS
Return
Delete From dbo.Contacts Where IsDeleted = 1
GO
答案 0 :(得分:2)
The documentation非常清楚:
“无条件退出查询或过程。立即返回 并且可以在任何时候用于退出程序, 批处理或语句块。 RETURN后面的语句不是 执行“。
不会执行删除语句。
return
语句采用可选参数,但要将查询用作值,您需要在括号中使用select。例如:
return (select top 1 id from SomeTable)
答案 1 :(得分:0)
执行proc时永远不会发生删除。
执行proc时,执行返回后的语句唯一一次是它与goto进程相关并且代码是在那里发送并绕过返回的。这种代码有时曾经在SQL Server中允许使用Try Catch块之前编写以执行错误操作。