ストアドプロシージャを実行して戻り値を受け取る方法
スポンサーリンク
Excel VBA から SQL Server のストアドプロシージャを実行して、ストアドプロシージャが RETURN で返した値を受け取るサンプルコードです。
SQL Server側の設定
事前に SQL Server に以下のストアドプロシージャを作成しておきます。
sql(実行可能なサンプルコード) | |
1 2 3 4 5 6 | CREATE PROCEDURE TEST_PROC AS BEGIN --5を返す RETURN 5; END |
VBA のサンプルコード
上記のストアドプロシージャを実行して戻り値を受け取るサンプルコードは次の通りです。
このコードを実行するには、事前にADODBへの参照設定が必要です。
VBA(実行可能なサンプルコード) | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | Option Explicit Sub test() '■接続先情報を設定 'この例では、ローカルのインスタンス「SQLEXPRESS」にWindows認証で接続する。 Dim connectionString As String Dim dataSourceName As String Dim databaseName As String '「.」はローカルを表す。他のサーバに接続する場合はホスト名を指定。 dataSourceName = ".\SQLEXPRESS" ' 'TESTデータベースに接続する。 databaseName = "TEST" 'ODBC接続の接続文字列を作成する。 connectionString = "" connectionString = connectionString & "PROVIDER=MSDASQL;" connectionString = connectionString & "DRIVER={SQL Server};" connectionString = connectionString & "SERVER=" & dataSourceName & ";" connectionString = connectionString & "INITIAL CATALOG=" & databaseName & ";" connectionString = connectionString & "Trusted_connection=yes; " '■接続 Dim objConnection As ADODB.Connection Set objConnection = New ADODB.Connection objConnection.CursorLocation = adUseClient objConnection.Open connectionString '■実行するストアドプロシージャを設定 Dim objCommand As ADODB.Command Set objCommand = New ADODB.Command Set objCommand.ActiveConnection = objConnection objCommand.CommandType = adCmdStoredProc objCommand.CommandText = "TEST_PROC" '■戻り値を受け取るパラメータを設定 Dim objParameter As ADODB.Parameter Set objParameter = objCommand.CreateParameter() objParameter.Name = "ReturnValue" '引数の名前(任意の名前) objParameter.Type = adInteger '数値 objParameter.Direction = adParamReturnValue '戻り値 objParameter.Value = Null objCommand.Parameters.Append objParameter '■ストアドを実行 objCommand.Execute '■ストアドの戻り値を取得 Dim returnValue As Integer returnValue = objCommand.Parameters("ReturnValue").Value Debug.Print "受け取った戻り値→" & returnValue '■終了処理 Set objParameter = Nothing Set objCommand = Nothing Set objConnection = Nothing End Sub |
上記を実行すると、イミディエイトウインドウに「受け取った戻り値→5」と表示されます。
スポンサーリンク