2009-04-30 4 views
0

TSQLというのは正しいですか?私はデータベーススクリプティングの初心者です。これはスクリプトと呼ばれていますか?私はこれで初心者です、本当に私です。 EXEC logtable_count値を返すTSQLスクリプトを実行するにはどうすればよいですか?

をしかし、経営のスタジオはそれを言う:私はのようなものを呼び出すことにより、スクリプトをテストしたいと思います

CREATE PROCEDURE dbo.LogTable_Count 

@Count INT OUT 

AS 

SELECT @Count = Count(ExperimentId) FROM LogTable 

GO 

私は、SQL Server Management Studioでストアドプロシージャを書きました指定されていないパラメータ@Countが必要です。これをテストするためにいくつかの特別な行を書くにはどうすればよいですか?

答えて

0
DECLARE @Count INT 

EXEC logtable_count @Count OUTPUT 

SELECT @Count 
0
declare @myout int 
exec logtable_count @myout 
print @myout 

編集:正解状態として、中央の線があるべきこと:

exec logtable_count @myout OUTPUT 
+0

print @myoutは「メッセージ」ウィンドウに何も印刷しないようになりました – MedicineMan

0

また、あなたは返すためにRETURN文を使用することができます

CREATE PROCEDURE dbo.LogTable_Count 

AS 

SELECT Count(*) FROM LogTable 

GO 
+0

私が尋ねたものではありません。私はあなたがなぜ*カラムの1つに名前をつけるのではなく、私に言うことができるなら、この答えをアップホートします。 – MedicineMan

1

を使用したいですストアドプロシージャからの整数値(唯一の整数のみ)。 COUNT(*)は内の行数を数える意味するので

DECLARE @RC int 
EXEC @RC=dbo.LogTable_Count 
PRINT @RC --or SELECT @RC 
+0

通常、戻り値は成功/失敗/ステータスインジケータのために(たいていはほとんど)使用されます – GilaMonster

1

あなたのストアドプロシージャは少し違って見えるでしょう:

CREATE PROCEDURE dbo.LogTable_Count 
AS 
DECLARE @Count int 
SELECT @Count = Count(ExperimentId) 
FROM LogTable 
RETURN @Count 
GO 

をあなたはこのようなあなたのストアドプロシージャを呼び出す必要があります結果セット。 Count(ColumnName)は、その列がnullでない結果セット内の行数をカウントすることを意味します。

を参照してください - このように、私はあなたがselect文でそれらを使用することができますので、関数を使用することを好む、単一の値についてhttp://sqlinthewild.co.za/index.php/2009/04/14/on-counts/

1

:そのような

print 'Creating countRows Stored Proc ...' 
go 
if exists (select * from dbo.sysobjects where name = 'countRows') drop function countRows; 
go 
create function dbo.countRows() 
    -- ************************************************************************** 
    -- Procedure: countRows() 
    --  Author: Ron Savage 
    --  Date: 05/01/2009 
    -- 
    -- Description: 
    -- This function counts the rows in a table and returns it. 
    -- ************************************************************************** 
    returns integer 
begin 
    return(select count(*) from mytable); 
end 
go 

-- Now you can use it in a select ... 
select dbo.countRows() 
go 

-- Or store it in a variable ... 
declare @mycount integer 

select @mycount = dbo.countRows() 

select @mycount 
go 

関連する問題