○ ストアドプロシージャ
■単純なストアドプロシージャの作成
create procedure dbo.test
as
select 'test procedure'
▼実行
execute dbo.test
▼実行結果
test procedure
▼ストアドプロシージャの削除
drop procedure dbo.test
■戻り値を返すストアドプロシージャ
戻り値としての RETURN 文は整数型の値しか返せません。
create procedure dbo.test
as
return 1
■return の戻り値の取り方
DECLARE @r INT
execute @r=dbo.test
select @r
■引数を取るストアドプロシージャ
create procedure dbo.test
@i INT
as
select 'test procedure' + cast(@i as VARCHAR)
▼実行
execute dbo.test 100
▼実行結果
test procedure100
■複数の引数を取るストアドプロシージャ
create procedure dbo.test
@str1 VARCHAR(10),@str2 VARCHAR(10)
as
select @str1 + @str2
▼実行
execute dbo.test 'aaaa','bbbb'
▼実行結果
aaaabbbb
■ローカル変数を使う
create procedure dbo.test
@str1 VARCHAR(10),@str2 VARCHAR(10)
as
DECLARE @str VARCHAR(20)
set @str = @str1 + @str2
SELECT @str
■出力パラメータ
2つの引数に値を入れて返します
create procedure dbo.test
@i INT OUTPUT,@j INT OUTPUT
as
select @i=1
select @j=2
▼出力パラメータから値の取得
DECLARE @i INT
DECLARE @j INT
execute dbo.test @i OUTPUT,@j OUTPUT
select @i
select @j
■IF文
create procedure dbo.test
@str VARCHAR(10)
as
DECLARE @i INT
IF @str='a'
BEGIN
SET @i=10
END
ELSE
BEGIN
SET @i=100
END
SELECT @i
▼実行
execute dbo.test 'a'
▼実行結果
10
■WHILE文
create procedure dbo.test
as
DECLARE @i INT
DECLARE @j INT
SET @i=0
SET @j=0
WHILE @i<10
BEGIN
SET @i = @i + 1
SET @j = @j + @i
END
SELECT @j
▼実行
execute dbo.test
▼実行結果
55
■クエリの結果をローカル変数に入れる
▼countの結果をローカル変数に入れます
create procedure dbo.test
as
DECLARE @i INT
SET @i=(select count(*) from table1)
SELECT @i
▼select 文の1つだけの結果がローカル変数に入ります。
create procedure dbo.test
as
DECLARE @i INT
SET @i=(select top 1 ID from table1)
SELECT @i
■クエリの結果を総て返す
▼IF文の結果により、select文の結果を総て返す
create procedure dbo.test
@str VARCHAR(10)
as
IF @str='a'
BEGIN
select * from table1
END
ELSE
BEGIN
select ID from table1
END
■エラー処理
BEGIN TRY
BEGIN TRANSACTION
--エラーが起こりそうな構文
COMMIT TRANSACTION
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION
--エラー時の処理
return ERROR_NUMBER()
END CATCH
▲トップページ
>
SQL 関連