私はこれに関する他のいくつかの質問を理解するのに苦労しています。SQL Server 2008のストアドプロシージャー/関数からクエリ可能なテーブルを返す
私は基本的に小さなロジックを実行するストアドプロシージャを持っていて、内部ジョインのロードを伴うSELECT
が続きます。
これを呼び出して結果を返すことができますが、それに対してクエリを実行できます。
私はテーブル価値関数に関する別の質問を見たことがありますが、どういうふうに機能するのかよく分かりません。誰か助けてくれますか?
私はこれに関する他のいくつかの質問を理解するのに苦労しています。SQL Server 2008のストアドプロシージャー/関数からクエリ可能なテーブルを返す
私は基本的に小さなロジックを実行するストアドプロシージャを持っていて、内部ジョインのロードを伴うSELECT
が続きます。
これを呼び出して結果を返すことができますが、それに対してクエリを実行できます。
私はテーブル価値関数に関する別の質問を見たことがありますが、どういうふうに機能するのかよく分かりません。誰か助けてくれますか?
はあなたが実装できる機能の例です。
CREATE FUNCTION [dbo].[YourFunction](@PassedValue VARCHAR(50))
RETURNS @RtnValue TABLE
(
Col1 INT,
Col2 INT
)
AS
BEGIN
IF @PassedValue NOT LIKE '%[^0-9]%'
BEGIN
INSERT INTO @RtnValue
SELECT 1,1 -- Your first query here
END
ELSE
BEGIN
INSERT INTO @RtnValue
SELECT 2,2 -- Your second query here
END
RETURN
END
次に、あなたがあなたのクエリにテーブルとしてそれを使用することができます。
SELECT *
FROM dbo.YourFunction('123')
乾杯、それはこの例で動作した! – NibblyPig
Hereは、テーブル値関数の作成と使用の単純明快な例です。
結果セットで複雑な処理を行う必要がある場合は、要件とSQL Serverのバージョン(2008+必須)に応じて、table-valued parameterのストアドプロシージャを作成することをお勧めします。これには、user-defined table typeを作成し、このタイプの入力パラメーターをストアード・プロシージャーで宣言して結果を処理します。ここで
それは「少しロジックをする」とはどういう意味?あなたのspがデータ(そして他の操作)を挿入したり更新したりしてから 'SELECT'を実行する必要がある場合、これは関数では動かすことができません – Lamak
渡された値を検査し、いくつかの違いがあります。SELECT – NibblyPig
しかし、これはやや異なった 'SELECT'はsamを持っていますか他の列よりも列が大きいですか? – Lamak