○関数


■単一の結果を返す関数の作成

CREATE FUNCTION dbo.func(@i INT)RETURNS INT
AS
BEGIN
	RETURN @i+2
END

▼実行

select dbo.func(2)

▼実行結果

4

▼関数の削除

drop function dbo.func




■引数を利用する関数

CREATE FUNCTION dbo.func(@i INT)RETURNS VARCHAR(10)
AS
BEGIN
	RETURN CAST(@i AS VARCHAR(10))+'aaaa'
END

▼実行

select dbo.func(2)

▼実行結果

2aaaa




■複数の引数を取る関数

CREATE FUNCTION dbo.func(@i INT,@j INT)RETURNS INT
AS
BEGIN
	RETURN @i+@j
END




▼実行

select dbo.func(2,3)

▼実行結果

5




■テーブルを返す関数(一つのSELECT文しか記述できない)

CREATE FUNCTION dbo.func(@i INT)RETURNS TABLE
AS
	RETURN (SELECT * FROM table1 WHERE ID = @i)

▼実行

select * from dbo.func(1)




■複数ステートメントのテーブル値関数
複雑なことが出来るが、戻り値のテーブルの宣言が必要

CREATE FUNCTION dbo.func(@i INT) RETURNS @test TABLE(i INT,str VARCHAR(255))
AS
	BEGIN
		DECLARE @j INT
		SET @j=(select MIN(ID) from table1)+@i
		--戻り値の名前と一致している必要はない
		INSERT INTO @test SELECT ID,field1 FROM table1 WHERE ID=@j
		RETURN
	END



▲トップページ > SQL 関連