• 締切済み

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

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) です。

みんなの回答

  • X-Terra
  • ベストアンサー率48% (25/52)
回答No.1

SQL-Serverの設定にもよるかと思うのですが、そのストアドプロシジャーが入っているデータベースは、(接続するユーザーの)デフォルトデータベースですか? もし、そうではないのなら、データベース名をVB上で指定してあげる必要があるのではないかと思うのですが。 cmd.CommandText = "(DB名).Test_Pro" などです。

Kalen_F
質問者

補足

DB名を記述に加えたら、上手くストアドプロシージャへ進めたんですが、新たなエラーが出てしまって、困ってます。 そのストアドプロシージャの中身って言うのが、 CREATE PROCEDURE [Test_pro] @a int,@b varchar(10) output AS begin if Len(@a)>0 select @b='Found!'; else select @b='Not Found!'; end なんですが、 Microsoft OLE DB Provider for SQL Server エラー '80040e10' プロシージャ 'Test_Pro' にはパラメータ '@b' を指定してください。 というエラーが出てしまうんです。 一体、どこがマズいんでしょ???

関連するQ&A

  • 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 というエラーコードをネットで調べてみたりしたのですが 構文エラーというような説明が書かれており、何が原因なのか良く分からなく困っています。 何が原因なのか分かる方がいらっしゃいましたら 教えて下さい。

  • バッチで実行する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

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

    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 どなたか原因のわかる方がいれば、宜しくお願いします。

  • ストアド実行時のタイムアウト

    SQL-Server2000,VB6 データ抽出クエリを高速化すべくストアドプロシージャをVBプログラムから起動しています。 以下抜粋 cmd.ActiveConnection = Conn cmd.CommandText = sp_Shukei cmd.CommandType = adCmdStoredProc Set Rs = cmd.Execute 抽出基となるテーブルのレコード件数が大量になったせいなのか、最近以下のエラーが発生するようになりました。 -2147217871(80040e31)[microsoft ] [odbc sql server driver]時間切れになりました いろいろ調べて、プログラムで Conn.CommandTimeout = 0 としてもだめでした。 ストアド自体はReadOnlyですし、トランザクション排他待ちが起きている可能性はありません。 ですのでLOCK_TIMEOUTとは違うと思っています。 単にストアドに記述しているクエリの解釈か実行に時間が掛かっているものと思えるのです。 DB接続自体はこの処理前に何の問題もなく終わっています。 ※実はエンドユーザ環境でのみ発生します。開発環境で同じデータ量で試しても再現しないのです。 エンドユーザのネットワークが遅いのも、ひとつの原因になっているものと思われます。 時間切れを起きなくするにはどうしたらよいのでしょうか? どなたかご存知の方、教えてください。

  • ストアドプロシージャの処理終了を判定

    OS:windowsXP Pro Access Version:ACCESS2000 AccessVBAでストアドプロシージャを呼び出し処理をしていますが、ストアドプロシージャでの処理終了を判定して、次のステップに移るような処理を考えています。 SQLServerには、ODBC経由で接続しています。 ストアドプロシージャの呼び出しは巧く行くのですが、処理終了が判定できません。 具体的にはどうすればストアドプロシージャの処理の終了を判定することができるのでしょうか?      Dim adoCN As ADODB.Connection Dim str_adoCN As String Dim strCommand As ADODB.Command Dim RS As New ADODB.Recordset str_adoCN = "Data Source='SQL_XXXX'; User ID='XX';Password='XXXXXXXX';" Set adoCN = New ADODB.Connection adoCN.Open str_adoCN Set strCommand = New ADODB.Command Set strCommand.ActiveConnection = adoCN strCommand.CommandText = "Procedure_XXXX" strCommand.CommandType = adCmdStoredProc Set RS = strCommand.Execute() 次の処理....

  • ストアドプロシージャの戻り値が取得できない

    ストアドプロシージャの戻り値が取得できない ストアドプロシージャ内でSelectとUpdateを行い、設定した戻り値をリターンしたいのです。 ついでにSelectとした複数行の結果の読み込みもしたいのですが。 Dim cmd As New System.Data.SqlClient.SqlCommand Dim i As Integer Dim readerA As System.Data.SqlClient.SqlDataReader cmd.CommandType = Data.CommandType.StoredProcedure cmd.CommandText = "SP名" cmd.Parameters.Add("A", System.Data.SqlDbType.Int) cmd.Parameters("A").Direction = System.Data.ParameterDirection.ReturnValue readerA = cmd.ExecuteReader() i = cmd.Parameters("A").Value if (i = 0) Then 処理 End If While readerA.Read() 処理 End While 上記でSelectした結果をreaderA("カラム名") で読みこめているのですが、戻り値Aの値が取得できていません。 ウォッチ式でcmd.Parameters("A").Valueを見るとNothingになっています。 ちなみに、違うストアドを実行しているところでは戻り値は取得できています。。。 ストアドがおかしいんでしょうか。Selectの取得結果も見ようとしているのがまずいのでしょうか。 環境はvb.net、SQLServer2005です。

  • ASP.netにストアドプロシージャが登録できない

    ASP.netにストアドプロシージャが登録できません。 SQLServer2000にストアドプロシージャを作成しASP.netにsqlcommandを作成。 sqlcommandのプロパティのcommandtypeをStoredProcedureとし、 commandtextにストアドプロシージャ名を入力すると このコマンドの新しいパラメータコレクションを作成しますか?と出てきて 「はい」とするとサーバー名選択画面となり、サーバー名を正しく入力し ログインID、パスワードも正しく入力、オプションも正しく入力したが OK押下後にプロパティの値が無効ですとなってしまい詳細を見ると ストアドプロシージャ***がデータベースに見つかりませんでしたと なってしまいます。 既存のストアドプロシージャはリンク出来るのですが、新規のものが このようになります。原因・解決方法を教えて頂きたく宜しくお願いします。

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

    Access2003とSQL Server2005Expressです。 初歩的な質問で恐縮です。 以下のストアドプロシージャのデータ取得先を、テーブルではなく 別のストアドプロシージャにしたいのですが、 その方法がわかりません。 CREATE PROCEDURE テスト AS SELECT コード, 社名, 住所, 電話 FROM 名簿     ↑     これをテーブルではなく、別のストアドプロシージャを     指定したのですが・・・。     ここをストアドプロシージャ名にするとエラーになります。     どうすればよろしいでしょうか?

  • .NETからストアドプロシージャを実行

    VB.Netからストアドプロシージャを実行するプログラムの書き方がよく分かりません。 データベースはOracleです。 PROCEDURE test(aaa IN number, bbb IN varvhar2, ccc IN OUT varchar2); といったPL/SQLをVB.NET上で実行するとします。 (略:データベースへの接続処理) strSql = "begin test(10, 'テスト', '');end;" 結果「式が割り当てられていません」とエラーが出ます。 すべての引数がINのプロシージャでは、上記の方法で実行できたので、IN OUTへの引数の渡し方に問題があると思うのですが、どうしても分かりません。 まだ使い始めたばかりで、どうしていいかまったく分からない状態です。 どうかご指導お願い致します。

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

    こんばんは。 C#のアプリケーションからストアドプロシージャの実行を検討 しています。ストアドプロシージャでは複数テーブルを更新する バッチシステムです。 このケースでは、C#側ではエラーをどこまでハンドリングするのが 良いでしょうか?。 「成功と失敗の戻り値だけ」か、それとも「ORA-」のようなエラーまで全てハンドリングすべきか迷っていまして・・。 ご意見お願いします。

専門家に質問してみよう