2009-11-04 53 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在通過它,就像任何其他變量(它初始化爲空)前。如果您在調用和參數聲明中都沒有「輸出」子句,則該值不會被傳回。聯機叢書將有更多細節和細節。

(你也可以使用一個返回值,但一般這個應該保留給錯誤處理。)