○関数
■単一の結果を返す関数の作成
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