こんにちは、阿久梨絵です!
SQL Server を使っていると、「あれ?他のDBとちょっと違うな…」と感じること、ありませんか?
実はSQL Server には、T-SQLという独自の拡張構文があり、
カーソルやストアドプロシージャなど、実務で便利な機能がたくさんあります。
今回は、現場でよく出てくる「カーソル処理」や「T-SQLのクセ」などを、
“あ、これ現場で使える!”と思える小技として、やさしく整理してみました。
T-SQLって何?
T-SQL(Transact-SQL)は、SQL Server専用の拡張SQL。
標準SQLに加えて、変数・制御構文・エラーハンドリングなどが使えます。
DECLARE @count INT = 0;
WHILE @count < 5
BEGIN
PRINT @count;
SET @count = @count + 1;
END
→ ループ処理もできる!まるでプログラミング言語みたい
カーソルの使い方(例)
カーソルは、1行ずつ処理したいときに使います。
DECLARE order_cursor CURSOR FOR
SELECT order_id FROM orders;
OPEN order_cursor;
FETCH NEXT FROM order_cursor INTO @order_id;
WHILE @@FETCH_STATUS = 0
BEGIN
— ここで1件ずつ処理
PRINT @order_id;
FETCH NEXT FROM order_cursor INTO @order_id;
END
CLOSE order_cursor;
DEALLOCATE order_cursor;
ただし、大量データには不向きなので、使いどころは慎重に
ストアドプロシージャの基本構文
ストアドプロシージャは、よく使う処理を“まとめて保存”できる機能。
業務での再利用や保守性に優れています。
CREATE PROCEDURE GetCustomerOrders
@customer_id INT
AS
BEGIN
SELECT * FROM orders WHERE customer_id = @customer_id;
END
→ 呼び出しは `EXEC GetCustomerOrders 123;` のように簡単!
実務での使いどころTips
| 機能 | 使いどころ |
|---|---|
| T-SQLの制御構文 | 条件分岐・ループ処理が必要なとき |
| カーソル | 1件ずつ処理したいとき(ログ出力など) |
| ストアドプロシージャ | 業務ロジックをDB側にまとめたいとき |
SQL Serverは「ただのクエリ」だけでなく、業務ロジックの一部を担えるのが強みです。
まとめ
SQL Server には、T-SQL・カーソル・ストアドプロシージャなど、
・実務で役立つ
・保守性が高い
・再利用しやすい
そんな機能がたくさんあります。
「SQL Serverを使ってるけど、標準SQLしか書いてない…」という方は、
ぜひ一歩踏み込んでみてください。業務がぐっと楽になりますよ。
阿久梨絵でした!
