質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

Q&A

0回答

3194閲覧

Accessからストアド(MySQL)を呼び出し出力パラメータを受け取る方法

info_y.o

総合スコア12

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

0グッド

0クリップ

投稿2017/03/23 04:26

お世話になっております。

以前も同じ質問をしたのですが、解決に至らなかったため再度質問させていただきます。

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 ;

Access側に戻ってきた際のFieldの中身
イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問