SQL Server ならではの書き方、知ってますか?

こんにちは、阿久梨絵です!
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しか書いてない…」という方は、
ぜひ一歩踏み込んでみてください。業務がぐっと楽になりますよ。
阿久梨絵でした!

上部へスクロール
Verified by MonsterInsights