河端善博 ブログ / SQL Server / PASSJ

SQL Server, .NET, PASSJ

  PASSJブログ :: ホーム :: 連絡をする :: RSS  :: ATOM :: Login
  939 投稿数 :: 112 ストーリー :: 1473 コメント :: 594 トラックバック

ニュース

Windows Live Alerts
My Yahoo!に追加
Add to Google dotnetnuke.jp
NPOPLUS.JP
MVP
PASSJ

記事のカテゴリ

過去の記事

カテゴリ

イメージギャラリ

.TEXT

INETA コミュニティ

MOM2005

MSMVP

PASSJ

SQL コミュニティ

セキュリティ TIPS

セキュリティのキホン

テスト

ブログ翻訳

多言語対応

.TEXT

INETA コミュニティ

MOM2005

MSMVP

PASSJ

SQL コミュニティ

セキュリティ TIPS

セキュリティのキホン

テスト

ブログ翻訳

多言語対応

ランダムな INT 値を返すユーザー定義関数です。
NewID() 関数を利用しています。

■書式

  • dbo.NewIdInt(最小値, 最大値)
  • 例: SELECT dbo.NewIdInt(0, 10)

■注意

ユーザー定義関数は、本来 決定的である必要があります。
つまり、同じ引数に対して、常に同じ結果を返す必要があります。
しかし、このNewIdInt は、常に異なる値を返します。
したがって、SQL Server のクエリープロセッサが NewIdInt をうまく処理できない場合も考えられます。

■関数定義

NewIdInt 関数は、ビューをひとつ必要とします。

CREATE VIEW NewIdView
AS
    SELECT NewID() AS ID
GO
 
-- NewID を利用してランダムな INT を返します
CREATE FUNCTION NewIdInt
(
 @MinValue int, -- 最小値
 @MaxValue int -- 最大値
)
RETURNS INT
AS
BEGIN
    -- 変数宣言
    DECLARE @id INT
 
    -- NewIdView をクエリーし、結果を INT に変換します
    SELECT @id = abs(convert(int, convert(varbinary, ID)) % (@MaxValue - @MinValue + 1)) + @MinValue FROM NewIdView  (NOLOCK)
    RETURN @id
END
投稿日時 : 2004年4月16日 13:47

コメントを追加

# RandInt RAND()を利用してランダムな INT を返すユーザー定義関数 2004/04/16 13:52 河端善博の .TEXT でウェブログ
RandInt RAND()を利用してランダムな INT を返すユーザー定義関数

# RandInt RAND()を利用してランダムな INT を返すユーザー定義関数 2004/04/16 14:03 河端善博の .TEXT でウェブログ
RandInt RAND()を利用してランダムな INT を返すユーザー定義関数

# NewIdInt 関数, RandInt関数のテスト 2004/04/16 14:11 河端善博の .TEXT でウェブログ
NewIdInt 関数, RandInt関数のテスト

コメント

タイトル:
名前:
Url:
コメント: