2013-02-14 167 views
0

我想在SQL Server中執行數據類型。你知道我必須做什麼嗎?SQL Server - 在SQL Server中執行數據類型的過程

USE [MO] 
GO 

DECLARE @return_value int 

EXEC @return_value = [dbo].[SBC] 
     @UserId = 1, 

SELECT 'Return Value' = @return_value 
GO 

返回值:

Name ID 
---------- 
Adam 1 
Jhon 2 

例如IDintbigint?我只能執行現有的程序,這是一個問題。

+0

你究竟需要什麼和問題是什麼? Did not quite got it – DevelopmentIsMyPassion 2013-02-14 14:21:27

+0

請清楚..?我們沒有得到你想要的。 – 2013-02-14 14:22:46

+0

我需要關於返回值類型的信息。例如,名稱是「varchar」或「nvarchar」,Id是「int」或「bigint」 – 2013-02-14 14:28:16

回答

0

'返回值'是一個執行狀態指示器,是一個整數。這並不意味着要傳回數據。 成功標準值爲0,失敗爲1,但您可以傳回SP中的任何整數以反映許多不同的狀態。

從SQL Server幫助文件:

@ RETURN_STATUS是存儲模塊的 返回狀態的可選整數變量。在EXECUTE 語句中使用該變量之前,必須在 批處理,存儲過程或函數中聲明該變量。

當用於調用標量值用戶定義的函數時,@ return_status變量可以是任何標量數據類型。

如果您想要返回不同的數據類型(並且能夠查詢這些數據的'類型'),請使用'輸出參數'。輸出參數可以是任何數據類型,一旦SP存在,您可以查詢sys.parameters系統表,傳入您的SP的object_id(或僅加入到object.id和filter過程名稱上的sys.procedures),將sys .parameters到sys.types(在user_type_id上​​)獲取每個參數的sql數據類型名稱,包括輸出參數

Eg

DECLARE @Param3 bigint 
exec dbo.MySPName @Param1, @Param2, @Param3 output 
SELECT @Param3 --gives you output value 

--This will give you the names and data types of all output parameters in this SP 
SELECT p.name, t.name as [type], p.max_length, is_output 
FROM sys.parameters p 
JOIN sys.types t ON p.user_type_id = t.user_type_id 
WHERE p.object_id = OBJECT_ID(N'MySPName') 
AND p.is_output = 1 

對於標量值函數,在參數和類型的表此相同的查詢將返回一個無名參數(p.name爲空字符串/空白) - 這代表了UDF的返回值包含在產品包裝中的數據類型。但是Store Procedures只能有'返回狀態'整數。