SQLServerのストアドプロシージャをいじってみる(基礎の基礎) | おーう なんじゃそら
2009年12月06日(日)

SQLServerのストアドプロシージャをいじってみる(基礎の基礎)

テーマ:T-SQL

Select文やらはある程度勉強してるのでストアドプロシージャをいじってみようと思い

色々調べてるのですが、基礎的な部分がなかなか見つからない・・・

あちこちのサイトを参考にしながら、自分なりに少しずつまとめている最中です。


以下、自分が引っかかったところをメインに。



SQLServerでいうストアドプロシージャ

別名、Transact-SQLT-SQL



まず、「SQL Server Management Studio Express」をたちあげ

適当にデータベースを作成


データベース名:

  Test

テーブル名:

  TableTest_1


内容:
ID 名前 読み
1 Joney じぇにー
2 Tom とむ
3 True とぅるー
4 Betty べてぃ


「新しいクエリ」をクリックして、そこにプロシージャを記述していきます。




●プロシージャの作成●


まず、プロシージャというのはテーブルと同じく定義するものなので

CREATE TABLEと同じように最初にCREATEする必要があります。


CREATE PROCEDURE pro1


AS


CREATE PROCEDUREの後にある「pro1」というのが任意のプロシージャ名

行一つ分空けて書いてあるASの次の行からpro1の処理を記述していきます。

ASの上の行は、引数なのですがそれは後日説明します。


上の状態は、C#の関数で言うと


void pro1()

{


}


とやったような感じ。

処理何もなし。



●プロシージャの変更●


CREATEで作成すると、テーブルをCREATEしたのと同様に

プロシージャが作成されます。

んで、作ったはいいけどちょっと変更したいということがある場合

ただ書き換えてもう一度実行するだけだと、同じプロシージャ名でもう一つ生成されてしまいます。

そのために利用するのが以下


ALTER PROCEDURE pro1


AS


プロシージャの作成のときのCREATEの部分をALTERに変えただけですが

これで、プロシージャを変更することができます。

最初の一回はCREATEで、そのあとの修正時はALTERを利用してください。



●コメントをつけてみる●


1行コメント

--コメント本文

複数行コメント

/*

コメント本文

コメント本文

*/



●変数の定義●


DECLARE @ans int


変数は、頭に@をつけます。

そのあとのintは型名

DECLAREを忘れないように。


●変数に値を入れる●


--ansに100を入れる

SET @ans = 100


SETを忘れないように。

あと、変数にはどんな時も必ず@がつきます。


追記:

どうやら、SETはSELECTでもいいみたいです


SELECT @ans = 100




とりあえずここまで。

ここまでの知識のみの無駄なサンプル↓



CREATE PROCEDURE pro1

AS

--変数の宣言

DECRARE @min int

DECRARE @max int

SELECT @min = 1

SELECT @max = 3


/*

このあと実際にテーブルとか触れるよう

改良できたらいいな

*/



最初に作ったテーブルは次回使います。。。