• ベストアンサー
  • すぐに回答を!

ASPでのMySQLストアドプロシージャの実行

ASP(Active Server Pages)を使用してMySQLのストアドプロシージャを実行する方法をどなたか教えて頂けますでしょうか? 環境  OS    :Windows2000Server  WEBサーバー :IIS  DB    :MySQL Ver5.1.22 ODBC   :MyODBC Ver3.51 MySQLへの接続は、問題無く行えてそうなんですが ストアドプロシージャの実行がうまくいきません。 ASPには、以下のようなコードを記述しています。 Set cn = Server.CreateObject("ADODB.Connection") cn.ConnectionString = "Provider=MSDASQL;DRIVER={MySQL ODBC 3.51 Driver};SERVER=localhost;USER=root;PASSWORD=XXXX;DATABASE=XXXX;STMT=set names sjis;OPTION=2" cn.Open Set cmd = Server.CreateObject("ADODB.Command") Set rs = Server.CreateObject("ADODB.Recordset") cmd.ActiveConnection = cn cmd.CommandText = "test2" cmd.CommandType=adCmdStoredProc set rs = cmd.Execute ・・・ test2というストアドプロシージャは、 begin select * from テーブル名; end と、単純なselect文となっています。 IEでWEBページを開くと エラー タイプ Microsoft OLE DB Provider for ODBC Drivers (0x80040E14) [MySQL][ODBC 3.51 Driver][mysqld-5.1.22-rc-community]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 '{ call test2 }' at line 1 というエラーが表示されてしまいます。 0x80040E14 というエラーコードをネットで調べてみたりしたのですが 構文エラーというような説明が書かれており、何が原因なのか良く分からなく困っています。 何が原因なのか分かる方がいらっしゃいましたら 教えて下さい。

共感・応援の気持ちを伝えよう!

  • 回答数2
  • 閲覧数1052
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.2

#1 です。 ここの情報なんかはどうでしょうか。 http://bugs.mysql.com/bug.php?id=15635 なんかバグっぽい感じですね。MyODBC 3.51.13 あたりから修正されてるっぽいようですが。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

今まで、MyODBC 3.51.12 を使用していました。 現在の最新と思われるMyODBC 3.51.19 を入れて試しましたら 正常に動作しました。 temtecomai2さん どうもありがとうございました。 本当、助かりました。

関連するQ&A

  • ストアドプロシージャの実行で...

    Test_Pro、というストアドプロシージャを実行させたいんですが、 Microsoft OLE DB Provider for SQL Server エラー '80040e14' ストアド プロシージャ 'Test_Pro' が見つかりませんでした。 というエラーが出てしまいます。どうして??? 実行させる為に書いたソースは、 set cmd = Server.CreateObject("ADODB.command") Set cmd.ActiveConnection = conn cmd.CommandText = "Test_Pro" cmd.CommandType = 4 Set rs = cmd.Execute("@a", a) です。

  • ASPによる アクセス2000のデータベース更新について

    アクセス2000で作成したデータベースに ASPでデータベースを更新しようとしたのですが、エラーとなって更新できずにいます。 (アクセスデータベース内容) ID F1 F2 1 TEST1 TEST2 2 1 2 3 4 5 4 23 ※ID の 5  に 23 を登録したい。 (ASP内容) <% ' データベースへの接続を開始 Set cn = Server.CreateObject("ADODB.Connection") cn.Open "Driver={Microsoft Access Driver (*.mdb)}; " & _ "DBQ=" & Server.Mappath("TESTdb1.mdb") cn.Execute"INSERT INTO TTT(ID,F1) VALUES(5,23);" %> (エラー内容) エラー タイプ Microsoft OLE DB Provider for ODBC Drivers (0x80004005) [Microsoft][ODBC Microsoft Access Driver] 更新可能なクエリであることが必要です。 /SQL-TEST/ncsch1.asp, line 7 アクセスの追加クエリで、INSERT INTO TTT(ID,F1) VALUES(5,23); を 実行したら、問題無く 5 23 が登録できましたので、データベース自体に他からの実行の場合、更新出来ないような 設定になっていると思うのですが、対処方法がわかりません。 どうすればよいか教えて頂けないでしょうか?

  • MySQLのストアドプロシージャについて

    MySQL5.6のストアドプロシージャが返すSELECT結果のフェッチ方法について教えてください。 delimiter $ create procedure sample_proc() begin select * from TEST_TBL; end$ の様なストアドプロシージャがあり、これを他のストアドプロシージャから呼び出して、 ループしながらフェッチしたいのですが、どうすればよいでしょうか。

その他の回答 (1)

  • 回答No.1

念のため。 ASP って ADO の定数文字列って使えましたっけ? adCmdStoredProc って書いてますが別の場所で定数設定しているんですか? Const adCmdStoredProc = &H0004 って書いてないんだったら cmd.CommandType = &H0004 に変えてみるとか。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ご回答ありがとうございます。 説明不足でした。 ご指摘の件ですが、定数設定は行っております。

関連するQ&A

  • バッチで実行するVBScriptからのストアドプロシージャの実行

    VBスクリプトでDBにアクセスし、ストアドプロシージャを実行したいのですが、実行できなくて困っています。ADODB.Commandを使わずに、ADODB.Connection.ExecuteでCommandTextを実行するとレコードを取得することができるので、DBにコネクトすることはできているようなのですが、ストアドプロシージャを実行することができません。どなたか原因分かる方いらっしゃいますでしょうか。このスクリプトはASPではなく、バッチで実行します。よって参照設定ができないので、ComandTypeにadCmdStoredProcを値で入れるようにしています。サーバはWindows2003Server,DBはSQLServer2005です。よろしくお願いします。 Option Explicit On Error Resume Next Dim blnRetCode ' 戻り値 Dim objAdoCon ' ADO 接続 Dim objComm ' コマンドオブジェクト 'Dim return_value 'DBバックアップの成功、失敗の戻り値 ' ADO 定数の読み込み Set objAdoCon = WScript.CreateObject("ADODB.Connection") If Err.Number = 0 Then 'ADODBを使用してDBにアクセスする objAdoCon.ConnectionString = "Provider=SQLOLEDB.1;Password=aaaa;User ID=user2;Catalog=dbname;Data Source=192.168.8.2" objAdoCon.Open Set objComm = CreateObject("ADODB.Command") objComm.ActiveConnection = objAdoCon objComm.CommandType = 4 objComm.CommandText = "ExportData" objComm.Execute If (Err.Number <> 0) Then MsgBox Err.Number End If objAdoCon.Close End If Set objComm = Nothing Set objAdoCon = Nothing

  • DB接続ができなくなって困っています!

    いつも参考にさせていただいております。 今回、自宅のPCに構築した開発環境のDBに、急に接続できなくなりました。 ==================================== 【開発環境】※ASP環境 OS :windows 8 IIS:8.0 DB :(1)MySQL 5.5.32   ※「mysql-connector-odbc-5.2.5」もインストール済。  (2)Access2013 ==================================== 先日まで、問題なくDBに接続できていましたが、寝ぼけて何かの設定を変えてしまいました。 ※恥ずかしながら、気づいたら設定変更後で何の設定を変えたのか不明です。。。 すると、今まで正常に接続できていたMySQLとAccessが、以下のエラーで接続できなくなりました。 ==================================== 【MySQL接続】 Microsoft OLE DB Provider for ODBC Drivers エラー '80004005' [Microsoft][ODBC Driver Manager] データ ソース名および指定された既定のドライバーが見つかりません。 【Access接続】 Microsoft OLE DB Provider for ODBC Drivers エラー '80004005' [Microsoft][ODBC Driver Manager] 指定された DSN には、ドライバーとアプリケーションとのアーキテクチャの不一致が含まれています ==================================== なお、接続箇所のロジックは以下となります。 ==================================== 【MySQL接続】 Set oCn = Server.CreateObject("ADODB.Connection") oCn.Open UDL_FILE(※1), "", "" ※1 上記「UDL_FILE」は、以下の内容を設定しているUDLファイルを読み込んでいます。 ------------------------ [oledb] ; Everything after this line is an OLE DB initstring PROVIDER=MSDASQL;DRIVER={MySQL ODBC 5.2 Unicode Driver};SERVER=localhost;USER=hogeU;PASSWORD=hogeP;DATABASE=hoge; ------------------------ 【Access接続】 Set poCnMdb = Server.CreateObject("ADODB.Connection") poCnMdb.Open DNS(※2), "", "" ※2 上記「DNS」は、ODBCデータソース アドミニストレーター(32bit版)で登録したシステムDSNです。 ------------------------ ドライバー:Microsoft Access Driver(*.mdb) ------------------------ ==================================== MySQLやODBCドライバーの再インストールを試みましたが、上記エラーが解消されません。 自業自得なのは重々承知しておりますが、復旧できなくて大変困っています。 お忙しいところ申し訳ありませんが、復旧方法のご教授をお願いいたします。 以上です。

  • 【大至急】DB接続ができなくなって困っています!

    いつも参考にさせていただいております。 今回、自宅のPCに構築した開発環境のDBに、急に接続できなくなりました。 ==================================== 【開発環境】※ASP環境 OS :windows 8 IIS:8.0 DB :(1)MySQL 5.5.32   ※「mysql-connector-odbc-5.2.5」もインストール済。  (2)Access2013 ==================================== 先日まで、問題なくDBに接続できていましたが、寝ぼけて何かの設定を変えてしまいました。 ※恥ずかしながら、気づいたら設定変更後で何の設定を変えたのか不明です。。。 すると、今まで正常に接続できていたMySQLとAccessが、以下のエラーで接続できなくなりました。 ==================================== 【MySQL接続】 Microsoft OLE DB Provider for ODBC Drivers エラー '80004005' [Microsoft][ODBC Driver Manager] データ ソース名および指定された既定のドライバーが見つかりません。 【Access接続】 Microsoft OLE DB Provider for ODBC Drivers エラー '80004005' [Microsoft][ODBC Driver Manager] 指定された DSN には、ドライバーとアプリケーションとのアーキテクチャの不一致が含まれています ==================================== なお、接続箇所のロジックは以下となります。 ==================================== 【MySQL接続】 Set oCn = Server.CreateObject("ADODB.Connection") oCn.Open UDL_FILE(※1), "", "" ※1 上記「UDL_FILE」は、以下の内容を設定しているUDLファイルを読み込んでいます。 ------------------------ [oledb] ; Everything after this line is an OLE DB initstring PROVIDER=MSDASQL;DRIVER={MySQL ODBC 5.2 Unicode Driver};SERVER=localhost;USER=hogeU;PASSWORD=hogeP;DATABASE=hoge; ------------------------ 【Access接続】 Set poCnMdb = Server.CreateObject("ADODB.Connection") poCnMdb.Open DNS(※2), "", "" ※2 上記「DNS」は、ODBCデータソース アドミニストレーター(32bit版)で登録したシステムDSNです。 ------------------------ ドライバー:Microsoft Access Driver(*.mdb) ------------------------ ==================================== MySQLやODBCドライバーの再インストールを試みましたが、上記エラーが解消されません。 自業自得なのは重々承知しておりますが、復旧できなくて大変困っています。 お忙しいところ申し訳ありませんが、復旧方法のご教授をお願いいたします。 以上です。

  • ASPからMySQLへの接続

    http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/mysql_03.htm等を参考につくってみたのですが、 Microsoft OLE DB Provider for ODBC Drivers エラー '80004005' [Microsoft][ODBC Driver Manager] データ ソース名および指定された既定のドライバが見つかりません。 や Microsoft OLE DB Provider for SQL Server エラー '80040e4d' 接続文字列の属性が正しくありません。 のエラーが出てしまいます。 PC環境はWindows2003server、mysql5.0.18です。

  • ストアドプロシージャの実行について

    asp.net から sqlserver のストアドプロシージャを実行させる勉強をしています。 作成されているはずのストアドプロシージャを実行できずに困っています。 webformにテキストボックス、ボタン、データグリッドを貼り付け、ストアドプロシージャを作成し下記のプログラムを実行させるのですが上手くいきません。 (テキストボックスに任意で入力された数値のデータをボタンを押すと表示するものです) <エラー内容>→ ストアド プロシージャ 'proc1' が見つかりませんでした Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim cn As New SqlConnection Dim cmd As New SqlCommand cn.ConnectionString = "接続文字列" cmd.Connection = cn cmd.CommandText = "proc1" cmd.CommandType = System.Data.CommandType.StoredProcedure Dim p1 As SqlParameter = cmd.Parameters.Add("@param1", System.Data.SqlDbType.Int) p1.Value = TextBox1.Text cn.Open() Dim dr As SqlDataReader = cmd.ExecuteReader DataGrid2.DataSource = dr DataGrid2.DataBind() dr.Close() cn.Close() end sub ストアドproc1(場所:Northwind)の内容↓ CREATE procedure proc1 @param1 int as select * from products where categoryID=@param1 どなたか原因のわかる方がいれば、宜しくお願いします。

  • ASPからACCESSのOPENどうしても出来ません

    みなさんこんにちわ。 ASPを使用してweb上でローカルのACCESSデータベースを参照したいのですが、 エラーが出て、ページを開くことが出来ません。 動作環境は WINDOWS2000SP2 OFFICE2000SP2 MDAC2.5SP2 JET4.0 SP3 ODBCドライバのバージョン(Microsoft Access Driver) 4.00.6019.00 サンプルを参考に作成しました。DBをOPENするところのコードは openStr = "driver={Microsoft Access Driver (*.mdb)};" & _ "dbq=" & Server.MapPath("critters.mdb") Set cn = Server.CreateObject("ADODB.Connection") cn.Open openStr と書きました。 しかし、IISよりこのASPファイルを参照すると以下のエラーが出ます。 HTTP 500.100 - 内部サーバー エラー - ASP エラー インターネット インフォメーション サービス エラー タイプ Microsoft OLE DB Provider for ODBC Drivers (0x80004005) [Microsoft][ODBC Microsoft Access Driver]一般エラー レジ ストリ キー 'Temporary (volatile) Jet DSN for process 0x518 Thread 0x5ec DBC 0x2710064 Jet' を開くことができません。 どうもOPENするところで発生しているようなのです。 なにか、バージョンが古いのでしょうか。 NET8 ASSISTANTの環境は関係あるのでしょうか。 原因と思われるところがありましたら、どうか教えていただけないでしょうか。

  • IIS7でIIS6で動いていたASPアプリを動かしたい

    初めまして、santa51と申します 表題の通り、IIS7でASPアプリを動かしたいのですが、 動きません。 xpのIIS6では動いていました エラーの内容は Microsoft OLE DB Provider for ODBC Drivers エラー '80004005' [Microsoft][ODBC Microsoft Access Driver] ディスクまたはネットワークのエラーです。 /????/?????/login.asp, 行 109 となります 109行は 107 DBName="Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.Mappath("../cgi-bin/mydb/" & campany & "/master.mdb") 108 Set db=Server.CreateObject("ADODB.Connection") 109 db.Open DBName です。 確認がとれていることは 1.Server.Mappath("../cgi-bin/mydb/" & campany & "/master.mdb")は確実にあっています。 環境は vista business IIS7 access2003 です。 以上、よろしくお願いします santa51

  • ASP AccessDBオープン出来ない

    お世話になります。 サーバー:WindowsServer2003 R2 SE DB:Access2003 WindowsServer2003にASPを配置し、同じくWindowsServer2003にAccess2003を配置し、 ASPからAccessをオープンする時にエラーが出ます。 ODBC設定パターンと、Jetパターン両方等ダメです。 IISはもちろん設定しており、権限も問題無いと思われ、MicrosoftサポートでもTEMPのアクセス権限どうのこうのとありましたが、問題なさそうです。 サイトを探しまくって、分からない為、ご質問させて頂きまた。 有識者の方々、ご享受宜しくお願い申し上げます。 【ソース1】 Set gCon = Server.CreateObject("ADODB.Connection") gCon.Open "TEST" ※TESTはODBC名です。Accessを指定しております。Accessにはパスワードも何もありません。 【Webページ結果】 Microsoft OLE DB Provider for ODBC Drivers エラー '80004005' [Microsoft][ODBC Microsoft Access Driver] ファイル '(不明)' を開くことができませんでした。ほかのユーザーが排他的に開いているか、データを読み取る権限がありません。 【ソース2】 Set adoCon = Server.CreateObject("ADODB.Connection") adoCon.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("TEST.mdb") adoCon.Open ※パスはあってます。 【Webページ結果】 Microsoft JET Database Engine エラー '80004005' エラーを特定できません -------- ローカルでASP、Accessを実行すると、問題なくオープン出来ます。 WindowsServer2003が問題なのでしょうか?

  • NEWキーワードとCreateObjectは同じ?

    NEWキーワードとCreateObjectは同じことをするのでしょうか? Sub ADO_Sample1() Dim cn As New ADODB.Connection Set cn = CreateObject("ADODB.Connection") cn.Open "Provider = Microsoft.ACE.OLEDB.12.0;Data Source=" & _ "D:\Mail.mdb;Jet OLEDB:Database;" Debug.Print "ファイルに接続できました。" cn.Close: Set cn = Nothing End Sub このようなコードの時、 Set cn = CreateObject("ADODB.Connection") は、あってもなくても問題ないようです。 NEWとCreateObjectがある場合は、 2度データベースに接続してしまうのでしょうか? NEWとCreateObjectがあってもエラーにならない理由を教えてください。

  • WinXP→Server2003 にASPとDB(ACCESS)を移行

    WinXP→Server2003 にASPとDB(ACCESS)を移行、エラー '800a0ea9' WinXP 上にDB:ACCESS、ASPのWEBシステムを動かしていましたが、 WinServer2003 上に移行しました。 移行後、以下のエラーが出ました。 ---------------------------------------------------------- ADODB.Connection エラー '800a0ea9' プロバイダが指定されておらず、既定のプロバイダがありません。 /source/test.asp, 行 35 ---------------------------------------------------------- ODBCデータソースアドミニストレータ のシステムDSNを見たところ 確かにACCESSのドライバがありませんでした。 ネットで調べたところ (1)WinServer2003が64bitなので、32bitのACCESSのドライバは入っていない (2)以下32bit版の ODBCアドミニストレータを実行すると解決  →C:\WINDOWS\SysWOW64\odbcad32.exe  をクリックし、設定すれば32bitアプリケーションからODBCデータソースを利 用できる。 とあり、(2)を開くと確かに、MicrosoftAccessDriverがあり、こちらでWinXPのと きと同じようにODBC設定しました。 しかしこの段階でも ---------------------------------------------------------- ADODB.Connection エラー '800a0ea9' プロバイダが指定されておらず、既定のプロバイダがありません。 /source/test.asp, 行 35 ---------------------------------------------------------- がでてしまいます。 ちなみにこの行 35 には以下のソースがあります。 33 wsDSN="TEST" 34 Set gCon = Server.CreateObject("ADODB.Connection") 35 gCon.Open wsDSN 33 wsDSN="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\TEST\TEST.mdb" 34 Set gCon = Server.CreateObject("ADODB.Connection") 35 gCon.Open wsDSN としても同エラーでした。 ODBC接続がうまくいく方法アドバイスよろしくお願いします。