检查select查询是否在SQL Server存储过程中有结果

时间:2009-11-04 18:36:08

标签: sql sql-server tsql stored-procedures

我以前做过这个但是找不到的地方:/

我想在存储过程中创建一个变量并返回其值,该值将根据其他选择是否返回结果进行设置。

基本上是这样的:

@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

尝试过,没有骰子......我不能为我的生活记住我过去做过的事。

3 个答案:

答案 0 :(得分: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

答案 1 :(得分: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

答案 2 :(得分: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,就像任何其他变量一样(它被初始化为null)。如果在调用和参数语句中都没有“output”子句,则不会传回该值。在线图书将有更多细节和细节。

(您也可以使用RETURN值,但通常应保留此值以进行错误处理。)