お世話になっております。
以前も同じ質問をしたのですが、解決に至らなかったため再度質問させていただきます。
Accessからストアドを呼び出し出力パラメータを受け取りたいのですが、CURSORを使用したときのみ出力パラメータが受け取れなくて困っています。
なぜ受け取れないのかわかる方がいらっしゃいましたらご教示ください。
<確認済事項>
・CURSORを使わない場合は同じ呼び出し方法で出力パラメータの取得ができている
・ストアドで出力パラメータに値をセットした際に意図した値が設定されていることは確認済
・LOOP内の処理を正常に行われていることは確認済
Access側
Sub callProcedure() Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Dim cmd As ADODB.Command Set cn = New ADODB.Connection Set rs = New ADODB.Recordset Set cmd = New ADODB.Command cn.ConnectionString = "接続先情報" Call cn.Open With cmd .ActiveConnection = cn .CommandText = "TEST_PROC" .CommandType = adCmdStoredProc Call .Parameters.Refresh Call .Parameters.Append(.CreateParameter("oprm1", adVarChar, adParamOutput, 255)) Set rs = .Execute End With '後続処理 Call cn.Close Set cmd = Nothing Set cn = Nothing End Sub
ストアド側
delimiter // CREATE PROCEDURE TEST_PROC(OUT oprm1 VARCHAR(255)) BEGIN DECLARE done INT DEFAULT 0; DECLARE tmp VARCHAR(255); DECLARE str VARCHAR(255) DEFAULT 'NO SET'; DECLARE cur_test CURSOR FOR SELECT DB_ID FROM TBL_TEST; DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1; OPEN cur_test; REPEAT FETCH cur_test INTO tmp; IF NOT done THEN Set str = tmp; End IF; UNTIL done END REPEAT; CLOSE cur_test; Set oprm1 = str; END; // delimiter ;
あなたの回答
tips
プレビュー