Select文やらはある程度勉強してるのでストアドプロシージャをいじってみようと思い
色々調べてるのですが、基礎的な部分がなかなか見つからない・・・
あちこちのサイトを参考にしながら、自分なりに少しずつまとめている最中です。
以下、自分が引っかかったところをメインに。
SQLServerでいうストアドプロシージャ
別名、Transact-SQL、T-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
/*
このあと実際にテーブルとか触れるよう
改良できたらいいな
*/