SQL SERVER関数の深度表の値関数の処理分析
1484 ワード
下の表の値関数を使う場合もあります。表の値関数は主にデータの計算で結果集を返します。パラメータ(ビューとの大きな違い)を持つことができます。変数の定義や判断など、関数に過多な論理処理がない場合、表の値関数の戻り値セットは簡単に次のように書くことができます。
CREATE FUNCTION Fun_GetReportNews(@type varchar(10))
RETURNS TABLE
AS
RETURN
(
SELECT TPR_ID,TPR_Title,TPR_Date FROM TP_ReportNews WHERE TPR_Type = @type
)
呼び出し時にSELECT XX FROM Fun_。Get ReprotNews('xx')関数で変数を定義する場合は、計算処理などの書き方が少し違っていますが、表変数を定義するには、テーブル値関数では一時テーブルを作成することができません。変数だけです。簡単な書き方の様式を挙げると、次のようになります。
CREATE FUNCTION FUN_GetInfoList(@type varchar(10))
RETURNS @Table TABLE(TPR_ID int,TPR_Title nvarchar(100),TPR_PubDate datetime)
AS
BEGIN
DECLARE @a varchar(10)
SELECT @a = xx FROM XX WHERE xx = @type
INSERT @Table SELECT XX,XX,XX FROM TableName WHERE XX = @a --
RETURN
END
に複数の表操作を行うと、関数の中に表変数を定義して結果セットを保存してから関連クエリを行うことができます。スカラー値関数も同じように貼ったらいいです。古いものが抜けました。へへ~
CREATE FUNCTION FUN_DataFormat (@strDate datetime)
RETURNS varchar(20) AS
BEGIN
declare @date varchar(20)
set @date = DATENAME(YY,@strDate)+' '+Convert(VARCHAR,MONTH(@strDate))+' '+Convert(VARCHAR,DAY(@strDate))+' '
return @date
END
はスカラー値関数にアクセスする時、関数名の前にdboを入れます。そうでないとシステム内蔵関数と見なされますが、システム内蔵関数ではないので、エラーが発生します。上のはこのようにselect dbo.FUN_をテストできます。DataFormat(get date()はこれらをだましました。~~~