- - PR -
ASP からOracleのストアドを実行する方法について
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-11-03 18:02
お世話になります。
ASP初心者です。 ■環境 ASP IIS5.1 Oracle9i 現在ASPからOracleのストアドプロシージャを実行したく作業中です。 しかし、パラメーターを設定する箇所でエラーとなります。 今回初めてASPからのストアド実行をやったため、方法・エラー内容が不明です。 どなたかご存知でしたらよろしくお願い致します。 ※ エラー箇所はASPの cmd.Parameters.Append cmd.CreateParameter 部分です。 ■ ASP --------------- Set con = Server.CreateObject("ADODB.Connection") con.Open "TESTDB", "testus", "testps" '// コマンドオブジェクト Set cmd = Server.CreateObject("ADODB.Command") cmd.ActiveConnection = con cmd.CommandType = 4 cmd.CommandText = "sample_procedure" '-- param 1 cmd.Parameters.Append cmd.CreateParameter("in_userid", adChar, adParamInput) cmd.Parameters("in_userid").Value = "id_123" '-- param 1 cmd.Parameters.Append cmd.CreateParameter("in_passwd", adVarChar, adParamInput) cmd.Parameters("in_passwd").Value = "pw_123" cmd.Parameters.Append cmd.CreateParameter("out_result", adVarChar, adParamOutput) cmd.Parameters.Append cmd.CreateParameter("out_name", adVarChar, adParamOutput) ・ ・ ■ PL/SQL --------------- CREATE OR REPLACE PROCEDURE sample_procedure ( in_userid IN CHAR, in_passwd IN VARCHAR2, out_result OUT VARCHAR2, out_name OUT VARCHAR2 ) IS ・ ・ ■ エラー内容--------------- エラー タイプ ADODB.Command (0x800A0BB9) Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another. | ||||||||
|
投稿日時: 2005-11-03 18:49
エラー内容からすると、タイプが間違っているか、容量を超えているからしいですが、 とりあえず、Parameter と分解しないと原因がはっきりしません。
_________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2005-11-03 19:21
返信ありがとうございます。
指示いただいたとおり分けて実行したところ Set hParam1 = cmd.CreateParameter("in_userid", adChar, adParamInput) でエラーとなりました。 メッセージは同じものです。 型の設定が不正なのでしょうか? しかし、ストアド側はCAHRで設定しており、ASP側でもCHARで設定しております。 | ||||||||
|
投稿日時: 2005-11-03 20:18
VARCHAR ではないんですね... って、ストアド名から確認してるとも思えませんが... 以下の通りにやれば、普通はできるハズなのですが... Append、CreateParameter メソッドの例 (VB) _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2005-11-03 20:56
こんばんわ cmd.CreateParameter("in", adChar, adParamInput, 10) というように文字列の長さがいると思います(固定長なんで)。 VarChar2の場合はいらないです。 以上 | ||||||||
|
投稿日時: 2005-11-03 21:47
返信ありがとうございます。
以下の通り修正し、実行してもやはり同じエラーが表示されました。 cmd.CreateParameter("in", adChar, adParamInput, 10) ※PL/SQL側をVARCHAR2に変更し、ASP側でadVarCharを設定しても通りませんでした。 じゃんぬねっとさんから教えていただいたHPを確認しました。 やはり実行方法は間違ってなさそうですね・・・。 しかし・・・エラーが発生しており、何か設定が足りいかPL/SQL側が足りないのでしょうか・・・。 よろしくお願い致します。 | ||||||||
|
投稿日時: 2005-11-03 22:01
cmd.CreateParameter("in", 129, 1, 10)とかはどうですか。 ASPということなんで、インクルードしてるかなーと思いまして。 私はAccess2003から試しましたが、問題なく動作します。 以上 | ||||||||
|
投稿日時: 2005-11-03 22:18
エラーなくなりました。
ゆいたんさんに教えていただいたとおり、直接コード指定で実行したところ エラーがなくなりました。 ありがとうございました。 インクルードをしているか、との記述がありましたが・・・何かインクルード しなければいけないのでしょうか? それと、ご面倒でなければコード一覧がわかるHPをご存知でしたら教えていただけ ないでしょうか? よろしくお願い致します。 |