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