ストアドプロシージャの雛型
USE [testDB] --DB名を設定
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[testProcedure]
--引数と戻り値の宣言
@mode int,
@likeStr varchar(50),
@outputStr varchar(50) output
AS
BEGIN
--変数の宣言
DECLARE
@rowCount int,
@Id int,
@Name nvarchar(50),
@Birthday nvarchar(10),
@Gender char(1)
--「(X 件処理されました)」というメッセージを出さないようにする
SET NOCOUNT ON;
--トランザクション開始
BEGIN TRY
--条件分岐
IF @mode = 1
BEGIN
SELECT @rowCount = count(*) FROM dbo.employee WHERE NAME LIKE '%' + @likeStr + '%'
END
ELSE
BEGIN
SELECT @rowCount = count(*) FROM dbo.employee WHERE NAME LIKE '%' + @likeStr + '%'
END
--カーソル定義
DECLARE cursor1 CURSOR FOR SELECT * FROM dbo.employee
--カーソルのオープン
OPEN cursor1
--初回のフェッチをする(1レコード分を取得)
FETCH NEXT FROM cursor1 INTO
@Id,
@Name,
@Birthday,
@Gender
--全てフェッチするまで繰り返し
WHILE @@FETCH_STATUS = 0
BEGIN
/*
@Nameや@Birthdayや@Genderを使用した処理を記載
*/
--次のフェッチをする(1レコード分を取得)
FETCH NEXT FROM cursor1 INTO
@Id,
@Name,
@Birthday,
@Gender
END
--カーソルのクローズ
CLOSE cursor1
--カーソルの解除
DEALLOCATE cursor1
--トランザクション終了(コミット)
COMMIT TRAN
--戻り値を設定
SET @outputStr = 'あいまい検索結果のレコード数は' + CONVERT(nvarchar(10),@rowCount) + 'です'
RETURN
END TRY
BEGIN CATCH
--トランザクション終了(ロールバック)
ROLLBACK TRAN
--エラーコードとエラーメッセージを取得し戻り値に設定
SET @outputStr = '例外が発生しました。エラーコードは' + CONVERT(nvarchar(10),ERROR_NUMBER()) + ' エラーメッセージは' + ERROR_MESSAGE() + 'です'
RETURN
END CATCH
END
GO
テーブルが存在するのに「オブジェクト名が無効です」となる場合
以下で解消する場合あり。
コードにフォーカスした状態で[編集]→[IntelliSense]→[ローカルキャッシュの更新]