その「戻り値」は、実行ステータスインジケータを意味し、整数です。データを返すことを意図したものではありません。標準値は、成功の場合は0、失敗の場合は1ですが、SP内の任意の整数を返して、さまざまなステータスを反映させることができます。
SQL Serverヘルプファイルから:
@ return_statusは、モジュールの戻りステータスを格納するオプションの整数変数です。この変数は、EXECUTEステートメントで使用する前に、バッチ、ストアドプロシージャ、または関数で宣言する必要があります。
スカラー値のユーザー定義関数を呼び出すために使用する場合、@return_status変数は任意のスカラーデータ型にすることができます。
さまざまなデータ型を返したい(そしてこれらの「型」を照会できるようにしたい)場合は、「出力パラメーター」を使用します。出力パラメーターは任意のデータ型にすることができ、SPが存在すると、sys.parametersシステムテーブルにクエリを実行して、SPのobject_idを渡して(またはobject_idとフィルタープロシージャ名でsys.proceduresに結合する)、sysに結合できます。 .parametersをsys.types(user_type_id上)に設定して、出力パラメーターを含む各パラメーターのsqlデータ型名を取得します
例えば
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の戻り値を表します。ただし、ストアドプロシージャは、「returnstatus」整数のみを持つことができます。