2009-04-30 87 views
0

我正確地說它是TSQL嗎?我是數據庫腳本編程的新手。這是否稱爲腳本?我是這個新手,真的是我。如何運行返回值的TSQL腳本?

我只是寫在SQL Server Management Studio中的存儲過程:

CREATE PROCEDURE dbo.LogTable_Count 

@Count INT OUT 

AS 

SELECT @Count = Count(ExperimentId) FROM LogTable 

GO 

我想通過調用類似測試腳本:

EXEC logtable_count

但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 2009-04-30 23:19:50

0

你想用

CREATE PROCEDURE dbo.LogTable_Count 

AS 

SELECT Count(*) FROM LogTable 

GO 
+0

偉大的建議,雖然不完全是我問。如果你能告訴我爲什麼*而不是命名其中一列,我會加註這個答案。 – MedicineMan 2009-04-30 23:16:35

1

你也可以使用RETURN語句返回存儲過程中的整數值(只有一個整數)。

存儲過程看起來有點不同:

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

你要調用存儲過程是這樣的:

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

通常使用返回值(通常大多數情況下)用於成功/失敗/狀態指示器 – GilaMonster 2009-05-01 18:57:18

1

對於單值這個樣子,我更喜歡使用功能,因爲你可以在SELECT語句中使用它們:

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 

這樣。