Sql server 存储过程-返回结果而不执行

Sql server 存储过程-返回结果而不执行,sql-server,sql-server-2008,Sql Server,Sql Server 2008,我想为MS SQL Server 2008编写一个存储过程,用于从表中删除行。。。但是,如果提供了某个参数,它将显示如果此时正常运行该参数而不是实际删除该参数,将删除的内容 为了返回要删除的内容,我当然可以将要删除的所有内容复制到临时表中并返回该表 但是,是否有一个内置的功能可以实现该功能 我知道执行计划可能有助于调试,但我在文档中没有看到任何与此相关的内容(请参阅esp和问答)一种方法是为此创建三个过程。一个是“驱动程序”过程,它决定执行哪个过程。这一点很重要,因为当存在多个执行路径时,执行计

我想为MS SQL Server 2008编写一个存储过程,用于从表中删除行。。。但是,如果提供了某个参数,它将显示如果此时正常运行该参数而不是实际删除该参数,将删除的内容

为了返回要删除的内容,我当然可以将要删除的所有内容复制到临时表中并返回该表

但是,是否有一个内置的功能可以实现该功能


我知道执行计划可能有助于调试,但我在文档中没有看到任何与此相关的内容(请参阅esp和问答)

一种方法是为此创建三个过程。一个是“驱动程序”过程,它决定执行哪个过程。这一点很重要,因为当存在多个执行路径时,执行计划可能是一个真正的问题。您可以在此处更深入地了解性能影响

像这样的东西应该适合你

create procedure MyProc
(
    @DeleteData bit
) as

    if @DeleteData = 1
        exec MyDeleteProc
    else
        exec MySelectProc

一种方法是为此创建三个过程。一个是“驱动程序”过程,它决定执行哪个过程。这一点很重要,因为当存在多个执行路径时,执行计划可能是一个真正的问题。您可以在此处更深入地了解性能影响

像这样的东西应该适合你

create procedure MyProc
(
    @DeleteData bit
) as

    if @DeleteData = 1
        exec MyDeleteProc
    else
        exec MySelectProc

您可以遵循下面给出的T-SQL,其中我使用了一个示例表
TABLE1
,需要从中删除记录

子句
OUTPUT Deleted.*
是标准的SQL Server功能,它将自动返回要删除的所有行

自动显示正在删除的所有行

--boolean parameter that tells whether to just show rows being deleted
--OR to actually delete the rows
DECLARE @delete BIT = 0;

BEGIN TRAN

DELETE FROM TABLE1
OUTPUT DELETED.*;

IF @delete = 0
BEGIN
    ROLLBACK TRAN
END
ELSE
BEGIN
    COMMIT TRAN
END

您可以遵循下面给出的T-SQL,其中我使用了一个示例表
TABLE1
,需要从中删除记录

子句
OUTPUT Deleted.*
是标准的SQL Server功能,它将自动返回要删除的所有行

自动显示正在删除的所有行

--boolean parameter that tells whether to just show rows being deleted
--OR to actually delete the rows
DECLARE @delete BIT = 0;

BEGIN TRAN

DELETE FROM TABLE1
OUTPUT DELETED.*;

IF @delete = 0
BEGIN
    ROLLBACK TRAN
END
ELSE
BEGIN
    COMMIT TRAN
END

那么您想要一个返回select查询结果或执行delete的过程吗?这有点奇怪,但并不是什么大问题。所以您想要一个过程,它要么返回select查询的结果,要么执行delete?这有点奇怪,但不是什么大问题。