2008年7月30日水曜日

【SQL】重複のあるデータをHaving句で取得

--HAVING句を使ってidに重複のあるデータのみ取得する。
--概要・・・
--①id ごとに件数を集計する。(GROUP BY)
--②集計した結果が1より大きいものを選択する。(HAVING)
--テーブル
tbl_dataの構成例
--[id] AS int
--[data] AS varchar(50)


SELECT
[id]
FROM [tbl_data]
GROUP BY [id]
HAVING
COUNT(*) > 1

2008年7月23日水曜日

【Transact-SQL】引数で値を返すストアドプロシージャの作成

--引数で値を返すストアドプロシージャの作成
CREATE PROCEDURE
st_get_output_data
(
@inArg1 varchar(16)
,@outArg1 varchar(32) OUTPUT
)
AS
BEGIN
SET @outArg1='@inArg1 is ' + @inArg1
RETURN 0
END

--ストアドプロシージャの実行
DECLARE @RC int
DECLARE @inArg1 varchar(16)
DECLARE @outArg1 varchar(32)

SET @inArg1 = 'test data'

EXECUTE @RC = [test].[dbo].[st_get_output_data]
@inArg1
,@outArg1 OUTPUT

SELECT @outArg1

--実行結果
--@inArg1 is test data

【Transact-SQL】複数行を返すテーブル値関数を作成する

--複数行を返すテーブル値関数を作成する
CREATE FUNCTION tfn_get_table_data
(
@inID AS int
)
RETURNS @wk TABLE
--戻り値のテーブル定義
(
outID int
)
AS
BEGIN
--条件式(IF,ELSE)、WHILE文も使うことが出来る。

--呼出元に返す値をテーブルにINSERTする。
INSERT INTO @wk(outID)VALUES(@inID)
--処理の最後はRETURNで終了させる。
RETURN
END