SQL Server のユーザー定義関数から複数の値 (数値と文字列など) を返すにはどうすればよいですか?
245990 次
5 に答える
41
テーブル値関数に変更します
たとえば、次のリンクを参照してください。
于 2008-11-10T20:19:12.040 に答える
17
別のオプションは、出力パラメータを持つプロシージャを使用することです - 出力パラメータを持つストアド プロシージャの使用
于 2008-11-10T20:22:01.283 に答える
10
インライン関数のクエリ アナライザー テンプレートは次のとおりです。既定では 2 つの値が返されます。
-- =============================================
-- Create inline function (IF)
-- =============================================
IF EXISTS (SELECT *
FROM sysobjects
WHERE name = N'<inline_function_name, sysname, test_function>')
DROP FUNCTION <inline_function_name, sysname, test_function>
GO
CREATE FUNCTION <inline_function_name, sysname, test_function>
(<@param1, sysname, @p1> <data_type_for_param1, , int>,
<@param2, sysname, @p2> <data_type_for_param2, , char>)
RETURNS TABLE
AS
RETURN SELECT @p1 AS c1,
@p2 AS c2
GO
-- =============================================
-- Example to execute function
-- =============================================
SELECT *
FROM <owner, , dbo>.<inline_function_name, sysname, test_function>
(<value_for_@param1, , 1>,
<value_for_@param2, , 'a'>)
GO
于 2008-11-10T20:32:03.933 に答える
9
Erland Sommarskog は、SQL Server でのデータの受け渡しに関する詳細な投稿を次の場所にあります。
http://www.sommarskog.se/share_data.html
彼は SQL Server 2000、2005、および 2008 について説明しています。それぞれの方法の長所と短所が十分に説明されているため、詳細をすべて読む必要があります。ただし、詳細を調べるために使用できる検索用語を提供するために、記事のハイライトを以下に示します (2015 年 7 月時点で凍結されています)。
この記事では、次の 2 つの関連する質問に取り組みます。
- あるストアド プロシージャの結果セットを別のストアド プロシージャで使用するにはどうすればよい
ですか?- あるストアド プロシージャから別のストアド プロシージャにパラメータでテーブル データを渡すにはどうすればよいですか?
出力パラメーター
- 一般的には当てはまりませんが、見落とされることがあります。
テーブル値関数
- 多くの場合、出力のみに最適な選択ですが、いくつかの制限があります。
- 例:
- インライン関数: これを使用して、単一の SELECT を再利用します。
- マルチステートメント関数: より複雑なロジックをカプセル化する必要がある場合。
テーブルの使用
- 最も一般的なソリューション。入力/出力シナリオの私のお気に入りの選択。
- 例:
- 一時テーブルの共有: 主に呼び出し元/呼び出し先の単一のペア用。
- プロセス キー テーブル: 同じ呼び出し先に対する多くの呼び出し元に最適です。
- グローバル一時テーブル: プロセスキーのバリエーション。
テーブル値パラメーター
- 必須 バージョン: SQL 2008
- クライアントからデータを渡すときに主に役立ちます。
挿入-EXEC
- 一見魅力的ですが、控えめに使用する必要があります。
CLR の使用
- 必須 バージョン: SQL 2005
- 複雑ですが、INSERT-EXEC が機能しない場合の最後の手段として役立ちます。
OPENQUERY
- 多くの落とし穴でトリッキー。落胆した。
XML の使用
- 必須 バージョン: SQL 2005
- 少し面倒ですが、利点がないわけではありません。
カーソル変数の使用
- お勧めできません。
于 2012-01-27T00:25:51.320 に答える