我知道这是可行的,但有没有人知道在()一行代码中这样做的方法:
EXEC @ResultInt = NameofAStoredProcedure
IF @ResultInt <> 0
RETURN @ResultInt比如:
-- I'm trying something like this but it does not work we want to do it all in
-- one line to do a Find-Replace throughout our code base
IF (EXEC @ResultInt = NameofAStoredProcedure) <> 0 RETURN ResultInt 发布于 2013-05-09 18:56:56
也许我搞错了,但为什么不干脆移除空白空间呢?
EXEC @ResultInt = NameofAStoredProcedure IF @ResultInt <> 0 RETURN @ResultInt;如果您只想把它放在一行中,以便更容易地编辑,那么应该可以。您甚至可以包括@ResultInt的声明
DECLARE @ResultInt int; EXEC @ResultInt = NameofAStoredProcedure IF @ResultInt <> 0 RETURN @ResultInt;使用MS 2005进行测试。
发布于 2013-05-09 18:47:18
编辑__.如前所述,这个不工作,但我将把它放在适当的位置,以说明您不能做什么:)
如果不将所有项链接到一起,那么我所能想到的唯一方法就是将调用包装在一个Scalar函数中。
但是,如果您执行此分配,则无法轻松重用它,并将创建包装器对象的分配。这是保持代码整洁的好方法,如果您只在一两个过程中这样做,那么它只会在DB中分配要管理的对象。
示例
CREATE FUNCTION dbo.SPWrapper() RETURNS int
AS
BEGIN
DECLARE @out int;
EXEC @out=NameOfStoredProcedure;
RETURN @out;
END
GO
-- Usage
IF (SELECT dbo.SPWrapper() ) <> 0 发布于 2013-05-09 19:09:17
我建议使用正则表达式来处理回车和行提要,而不是试图将所有内容压缩到一行,以使查找和替换更容易,同时保持代码的可读性。例如,假设您希望将"IF @ResultInt <> 0“更改为"IF @ResultInt <> 1”并添加行"SET @ResultInt = 1",然后执行以下操作:
在查找和替换中启用正则表达式
在Visual和中的“查找和替换”中,展开“查找选项”( -> Select -> Select正则表达式)。
查找什么语句
EXEC \@ResultInt = NameofAStoredProcedure\nIF \@ResultInt \<\> 0\nRETURN \@ResultInt替换为语句
EXEC \@ResultInt = NameofAStoredProcedure\nIF \@ResultInt \<\> 1\nSET \@ResultInt = 1\nRETURN \@ResultInt结果
EXEC @ResultInt = NameofAStoredProcedure
IF @ResultInt <> 1
SET @ResultInt = 1
RETURN @ResultInthttps://stackoverflow.com/questions/16468872
复制相似问题