SQLServer のストアドプロシージャについて
Oralce や PostgreSQL などのデータベースシステムでは、テーブル型のデータを返すプロシージャを作るときは、Typeを作らなければいけません。
しかし、SQL Server は型を宣言する必要がありません。これにより、他のデータベースのストアドプロシージャに比べ非常に変更に強くなります。
-- -- 得意先を検索します。 -- 引数:@得意先名 -- CREATE PROCEDURE pr得意先検索 (@得意先名 varchar(100)) AS SET NOCOUNT ON -- 名称に一致する得意先を抽出し、結果のレコードを返します。 SELECT 得意先ID, 得意先名, 郵便番号, 住所, 電話番号, FAX FROM 得意先マスタ WHERE 得意先名 LIKE @得意先名 RETURN GO
実行時は、
exec pr得意先検索('山田%') ※1
とすれば、これは
SELECT
得意先ID,
得意先名,
郵便番号,
住所,
電話番号,
FAX
FROM
得意先マスタ
WHERE
得意先名 LIKE '山田%' ※2
と等価のSQLとして実行できます。
無償のSQL Server 2005 Express Editionが利用できるため、初期段階から顧客環境にテスト導入でき、モックアップでのデモを行うのにも非常に適しています。具体的な内容は、今後の連載を通してお伝えしていきたいと思います。
さて、山下課長は以上のように上田君に説明しました。
上田君は、ストアドプロシージャが難しいものだと感じる前に、書き方が違う程度という印象を持つことができました。
また山下課長は、データについては以下のような SQL を、新人教育で習ったExcel VBAを使ったマクロで生成し、テーブルの代わりにストアドプロシージャを利用するように上田君に指示しました。
CREATE VIEW vi得意先マスタ AS SELECT 100001 AS 得意先ID, '得意先1' AS 得意先名 UNION SELECT 100002 AS 得意先ID, '得意先2' AS 得意先名 UNION SELECT 100003 AS 得意先ID, '得意先3' AS 得意先名 UNION SELECT 100004 AS 得意先ID, '得意先4' AS 得意先名 GO