MySQLのストアドプロシージャCall時のエラー

解決


HogeHoge  2008-03-05 13:06:16  No: 100391  IP: 192.*.*.*

VB6、MySQL5、ODBC5.1です。
サンプルから見よう見真似で下記のコードでストアドプロシージャ
をCALLしています。(ストアドプロシージャ自体は引数も戻り値も無い
類のものです)

←部分でエラーが発生します。コードの誤りを指摘頂ければ幸いです。

    Dim cmd             As ADODB.Command
    Dim Rs              As ADODB.Recordset
    Dim lRow            As Long
    
    Set cmd = New ADODB.Command
    Set Rs = New ADODB.Recordset

    cmd.ActiveConnection = Cnn
    cmd.CommandText = "PRCVIEW"
    cmd.CommandType = adCmdStoredProc
    Set Rs = cmd.Execute      '←ここでエラー発生
    If Rs.BOF Then
        MsgBox "レコードなし"
    End If

エラー内容は以下のとおりです。
[MySQL][ODBC 5.1 Driver][mysqld-5.0.27-community-nt]
You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to
use near '' at line 1

以上です、よろしくお願い致します。

編集 削除
もげ  2008-03-05 13:32:19  No: 100392  IP: 192.*.*.*

http://bugs.mysql.com/bug.php?id=15635
は、確認済みですか?(厳密にはVBに関係ないですが)

編集 削除
HogeHoge  2008-03-05 14:07:14  No: 100393  IP: 192.*.*.*

もげさん、レスありがとうございます。

ご指摘のページの[9 Dec 2005 14:02]での発言に
ADOを使用してMySQL5にアクセスした場合に発生云々・・とありまして

[6 Nov 2006 16:47] での発言では「このバグはFix云々・・」とありま
す。

そこで新しい(と思われる)ODBCドライバ3.51.23をダウンロードして
再度実行してみましたが、同様の結果でした。

編集 削除
HogeHoge  2008-03-05 14:20:08  No: 100394  IP: 192.*.*.*

自己レスです。
下記のようにコードを弄ってみたところ、エラーが回避できるようには
なりました。
(ただコーディングとしてこれが正しいかどうか分かりませんが・・)


    Dim cmd             As ADODB.Command
    Dim Rs              As ADODB.Recordset
    Dim lRow            As Long
    
    Set cmd = New ADODB.Command
    Set Rs = New ADODB.Recordset

    cmd.ActiveConnection = Cnn
    cmd.CommandText = "PRCVIEW()"         '←「()」を付ける
'    cmd.CommandType = adCmdStoredProc    '←コメントアウト
    Set Rs = cmd.Execute
    If Rs.BOF Then
        MsgBox "レコードなし"
    End If

編集 削除