2012-03-14 2 views
0

私はこれに関する他のいくつかの質問を理解するのに苦労しています。SQL Server 2008のストアドプロシージャー/関数からクエリ可能なテーブルを返す

私は基本的に小さなロジックを実行するストアドプロシージャを持っていて、内部ジョインのロードを伴うSELECTが続きます。

これを呼び出して結果を返すことができますが、それに対してクエリを実行できます。

私はテーブル価値関数に関する別の質問を見たことがありますが、どういうふうに機能するのかよく分かりません。誰か助けてくれますか?

+0

それは「少しロジックをする」とはどういう意味?あなたのspがデータ(そして他の操作)を挿入したり更新したりしてから 'SELECT'を実行する必要がある場合、これは関数では動かすことができません – Lamak

+0

渡された値を検査し、いくつかの違いがあります。SELECT – NibblyPig

+0

しかし、これはやや異なった 'SELECT'はsamを持っていますか他の列よりも列が大きいですか? – Lamak

答えて

3

はあなたが実装できる機能の例です。

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') 
+0

乾杯、それはこの例で動作した! – NibblyPig

1

Hereは、テーブル値関数の作成と使用の単純明快な例です。

結果セットで複雑な処理を行う必要がある場合は、要件とSQL Serverのバージョン(2008+必須)に応じて、table-valued parameterのストアドプロシージャを作成することをお勧めします。これには、user-defined table typeを作成し、このタイプの入力パラメーターをストアード・プロシージャーで宣言して結果を処理します。ここで

関連する問題