Windows 10 Pro_x64 + Excel2013_x86 VBA で ADODB.Command を使って ストアドを試してみる

Windows 10 Pro_x64 + Excel2013_x86 VBA で ADODB.Command を使って ストアドを試してみる
 
簡単なストアドを書いて、ADODB.Command から使ってみる
Windows版、Linux版ともに同じコードの動作確認(ODBCの指定以外は同じ)
こちらの続きといえば続き
※クラスへの実装の追加はどうするか、検討中
 
参考にしたのは以下のサイト
Create a Stored Procedure
コマンドでストアド プロシージャを呼び出す
対象テーブルはこちら
Windows 10 Pro_x64 + Excel2013_x86 VBA DataBase Access クラスを使って書き込んでみる
 
以下をSSMSから実行する


USE DEMO;
GO
CREATE PROCEDURE GETZIPCODE @SEQ nchar(8) AS
SELECT PREFCODE, POSTAL, CITIESKANJI, POADDRKANJI
FROM ZIPCODE
WHERE SEQ = @SEQ;
GO
以下でテストしてみる

EXECUTE GETZIPCODE N'00000001'
サンプルコード

Option Explicit

Private Sub CommandButton1_Click()
On Error GoTo ERR_PROC
'
Dim adoCon As ADODB.Connection
Dim adoRst As New ADODB.Recordset
Dim adoCmd As New ADODB.Command
Dim host As String
Dim user As String
Dim pass As String
Dim conn As String
'
host = "SQLSVODBC32"
' host = "SQLSV2UBUNTU" ' Linux
'
user = "demo"
pass = "demo"
'
conn = "DSN=" & host & ";UID=" & user & ";PWD=" & pass
'
adoCmd.CommandText = "GETZIPCODE"
adoCmd.CommandType = adCmdStoredProc
'
Set adoCon = New ADODB.Connection
'
adoCon.ConnectionString = conn
adoCon.CursorLocation = adUseClient
Call adoCon.Open
'
adoCmd.ActiveConnection = adoCon
'
adoCmd.Parameters.Refresh
adoCmd(1) = "00000001"
'
Set adoRst = adoCmd.Execute
'
While Not adoRst.EOF
Debug.Print Trim(adoRst.Fields("PREFCODE")) & vbTab & _
Trim(adoRst.Fields("POSTAL")) & vbTab & _
Trim(adoRst.Fields("CITIESKANJI")) & vbTab & _
Trim(adoRst.Fields("POADDRKANJI"))
'
adoRst.MoveNext
Wend
'
adoCon.Close
Set adoCon = Nothing
Set adoCmd = Nothing
'
Exit Sub

ERR_PROC:
adoCon.Close
Set adoCon = Nothing
Set adoCmd = Nothing
'
End Sub