ストアドプロシージャを作成したので、復習です。
このストアドプロシージャはインサート処理と、エラー表示を行います(多分・・・)。
USE [AA_DB] GO CREATE PROCEDURE [aa] (@log VARCHAR(5) --パラメータを宣言 ,@name VARCHAR(30) ,@suuzi int ,@MsgReturn VARCHAR(2000) OUTPUT ) AS DECLARE @SQL NVARCHAR(4000) --変数を宣言 DECLARE @DefMsg VARCHAR(1000) DECLARE @ReturnVal int DECLARE @Err INTEGER BEGIN SET @DefMsg='ストアドエラー' SET @ReturnVal = 2 --失敗したら2がかえってくる /** 引数チェック **/ IF(@log IS NULL OR @log = '' OR @name IS NULL OR @name = '' OR ) BEGIN SET @MsgReturn = @DefMsg + '引数未設定' RETURN @ReturnVal END BEGIN TRY SET @SQL = N'INSERT INTO [AA] VALUES ('''+ @log + '''' --引数を文字列として認識するための、コーテーション +N',''' + @name +'''' --NはUnicodeとして処理させるためにつける +N',' + CAST(@suuizi AS VARCHAR)+N''')' --数値を文字列と認識させるために、キャストする。 EXECUTE @Err = sp_executeaql @SQL --@Errに、インサートが失敗したのか成功したのかわかる値が入っている IF @Err <> 0 BEGIN SET @MsgReturn = @DefMsg + 'インサート失敗' RETURN @ReturnVal END SET @ReturnVal = 0 END TRY BEGIN CAHTCH SET @MsgReturn = @DefMsg + '[ERROR_NUMBER]'+@SQL RETURN @ReturnVal END CAHTCH END GO
変数とパラメータが、少しだけ混乱する時があるので気をつけます。