【SQL Server】ストアドプロシージャの雛型

ストアドプロシージャの雛型

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]→[ローカルキャッシュの更新]

タイトルとURLをコピーしました