2009-11-04 55 views
2

我这样做过,但无法找到其中:/检查是否选择查询的SQL Server内部的结果存储过程

我想创建一个存储过程中的变量,并返回其将其值设置取决于是否其他选择返回结果。

基本上是这样的:

@myVar int = 0 

BEGIN 
IF 
    SELECT SomeThing FROM SomeTable 
    @myVar = 1 
ELSE IF 
    SELECT SomeOther From SomeOtherTAble 
    @myVar = 2 
ELSE 
    @myVar = 0 
    SELECT @myVar 
END 

尝试,并没有骰子......我不能为我的生活还记得我这样做,在过去那里。

+1

要一个IF内或IF/ELSE在SQL Server中做多件事情的任何时间,你需要将指令包装在BEGIN/END块中 – 2009-11-04 18:47:10

回答

0

您是否在寻找这个

@myVar int = 0 

    Declare @var int; 
    set @var = 1 
    BEGIN 
    IF 
    BEGIN 
     SELECT SomeThing FROM SomeTable 
     @myVar = 1 
    ELSE IF 
     SELECT SomeOther From SomeOtherTAble 
     @myVar = 2 
    ELSE 
     @myVar = 0 
     SELECT @myVar 
    END 
    Return @var 
    END 
3

看看这对你的作品

Declare @myVar int 
set @myVar = 0 

SELECT * FROM dbo.Table1 
if @@RowCount <> 0 SET @myVar = 1 

If @myVar = 0 
begin 
    SELECT * FROM dbo.Table2 
    if @@RowCount <> 0 SET @myVar = 2 
end 

If @myVar = 0 
begin 
    SELECT * FROM dbo.Table3 
    if @@RowCount <> 0 SET @myVar = 3 
end 
0

听起来像输出参数给我...?

CREATE PROCEDURE dbo.MyProc 
    @MyVar int output 
AS 
BEGIN 

/* 
Your code goes here. Do whatever you like, and set @MyVar as desired. 
*/ 
RETURN 

说它像这样:

DECLARE @MyVar int 

EXECUTE dbo.MyProc @MyVar output 

您可以设置@myvar在通过它,就像任何其他变量(它初始化为空)前。如果您在调用和参数声明中都没有“输出”子句,则该值不会被传回。联机丛书将有更多细节和细节。

(你也可以使用一个返回值,但一般这个应该保留给错误处理。)