首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有一种方法可以执行SP,用if语句检查结果并返回值,所有这些都在一行之内?

有没有一种方法可以执行SP,用if语句检查结果并返回值,所有这些都在一行之内?
EN

Stack Overflow用户
提问于 2013-05-09 18:44:14
回答 3查看 7.6K关注 0票数 1

我知道这是可行的,但有没有人知道在()一行代码中这样做的方法:

代码语言:javascript
复制
EXEC @ResultInt = NameofAStoredProcedure
IF @ResultInt <> 0
RETURN @ResultInt

比如:

代码语言:javascript
复制
-- 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 
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-05-09 18:56:56

也许我搞错了,但为什么不干脆移除空白空间呢?

代码语言:javascript
复制
EXEC @ResultInt = NameofAStoredProcedure IF @ResultInt <> 0 RETURN @ResultInt;

如果您只想把它放在一行中,以便更容易地编辑,那么应该可以。您甚至可以包括@ResultInt的声明

代码语言:javascript
复制
DECLARE @ResultInt int; EXEC @ResultInt = NameofAStoredProcedure IF @ResultInt <> 0 RETURN @ResultInt;

使用MS 2005进行测试。

票数 2
EN

Stack Overflow用户

发布于 2013-05-09 18:47:18

编辑__.如前所述,这个不工作,但我将把它放在适当的位置,以说明您不能做什么:)

如果不将所有项链接到一起,那么我所能想到的唯一方法就是将调用包装在一个Scalar函数中。

但是,如果您执行此分配,则无法轻松重用它,并将创建包装器对象的分配。这是保持代码整洁的好方法,如果您只在一两个过程中这样做,那么它只会在DB中分配要管理的对象。

示例

代码语言:javascript
复制
CREATE FUNCTION dbo.SPWrapper() RETURNS int
AS
BEGIN
DECLARE @out int;
EXEC @out=NameOfStoredProcedure;
RETURN @out;
END
GO

-- Usage 
IF (SELECT dbo.SPWrapper() ) <> 0 
票数 0
EN

Stack Overflow用户

发布于 2013-05-09 19:09:17

我建议使用正则表达式来处理回车和行提要,而不是试图将所有内容压缩到一行,以使查找和替换更容易,同时保持代码的可读性。例如,假设您希望将"IF @ResultInt <> 0“更改为"IF @ResultInt <> 1”并添加行"SET @ResultInt = 1",然后执行以下操作:

在查找和替换中启用正则表达式

在Visual和中的“查找和替换”中,展开“查找选项”( -> Select -> Select正则表达式)。

查找什么语句

代码语言:javascript
复制
EXEC \@ResultInt = NameofAStoredProcedure\nIF \@ResultInt \<\> 0\nRETURN \@ResultInt

替换为语句

代码语言:javascript
复制
EXEC \@ResultInt = NameofAStoredProcedure\nIF \@ResultInt \<\> 1\nSET \@ResultInt = 1\nRETURN \@ResultInt

结果

代码语言:javascript
复制
EXEC @ResultInt = NameofAStoredProcedure
IF @ResultInt <> 1
SET @ResultInt = 1
RETURN @ResultInt
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16468872

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档