※ ChatGPTを利用し、要約された質問です(原文:SQL Server 2000でのストアド)
SQL Server 2000のストアドでのレコードセットとアウトプットパラメータの取得方法
このQ&Aのポイント
SQL Server 2000のストアドを使用して、レコードセットとアウトプットパラメータの両方を取得する方法について質問です。
ExcelのVBAからストアドを実行すると、アウトプットパラメータが正常に返ってくるが、レコードセットは取得できない問題が発生しています。
どのように修正すれば、レコードセットとアウトプットパラメータの両方を取得することができるのか、ご教示いただけないでしょうか?
現在,データベースの勉強中ですが,下記の内容で困っています。
●SQL SERVER 2000のストアド
CREATE PROCEDURE Strd_Test (
@aaa varchar(10),
@bbb varchar(10),
@rowcount int output,
@msg varchar(100) output
)
AS
set nocount on
begin
select aaa,bbb
from T_test
where aaa=@aaa
and bbb=@bbb
end;
select @rowcount=@@rowcount, @msg='検索に成功しました';
return
GO
●Excel2003のVBA
Private Sub btn1_Click()
Set dbCN = New ADODB.Connection
dbCN.Open "Provider=SQLOLEDB;" _
& "Data Source=*****,9999;" _
& "Initial Catalog=DB_Test;" _
& "User ID=sa;Password="
Set dbCOM = New ADODB.Command
dbCOM.ActiveConnection = dbCN
dbCOM.CommandType = adCmdStoredProc
dbCOM.CommandText = "Strd_Test"
dbCOM.Parameters.Refresh
dbCOM.Parameters("@aaa") = "100"
dbCOM.Parameters("@bbb") = "あいうえお"
(1) ストアドの実行
(2) MsgBox "検索結果:" & dbCOM.Parameters("@rowcount").Value _
& vbCrLf & dbCOM.Parameters("@msg").Value
(3) WorkSheets("Sheet1").Cells(1, 1).CopyFromRecordset dbRS
dbRS.Close
Set dbRS = Nothing
Set dbCOM = Nothing
End Sub
●こんな感じで,検索結果のレコードセットと,
アウトプットパラメータの両方を取得したいのですが
ExcelのVBAから,(1)のところで,
・「dbCOM.Execute」とした場合には,
(2)でアウトプットパラメータが正常に返ってきます
(3)は,当然エラーです
・「Set dbRS = dbCOM.Execute」とした場合には,
(2)でアウトプットパラメータが2つとも空です
(3)は正常にレコードセットを取得できます
こうなってしまうのですが,レコードセットと
アウトプットパラメータの両方を取得するためには,
どこを修正すれば良いのでしょうか?
どなたか,お力を貸してください。
お礼
jamshid6様,ご回答いただきまして,ありがとうございます。 ご提示いただいた2つの方法で,解決できました。 ずっと悩んでいたので,大変助かりました。 ありがとうございます。