@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

C#よりストアドの実行

1
投稿者投稿内容
みんみん
会議室デビュー日: 2004/10/28
投稿数: 2
投稿日時: 2004-10-28 18:02

はじめまして みんみんと申します。

C#よりSQL-SERVER2000のストアドを実行しようしてまして
実行したところ以下のエラーになります。
「型の名前が無効です。」

どこでエラーになっているのでしょうか?

***ストアド***

CREATE PROCEDURE dbo.ストアド名
@hi1 varchar(10)

AS
DECLARE @Ret int

---処理内容

RETURN 0

ERR_ROLLBACK:
RAISERROR('エラー発生。ROLLBACKします',0,1)
RETURN -1
GO

***C# ***

dbCommand.CommandType = CommandType.StoredProcedure;
dbCommand.CommandText = "dbo.ストアド名";

OleDbParameter dbParm = null;

//引数1
dbParm = dbCommand.Parameters.Add("hi1", OleDbType.VarChar, 5);

//戻り値
dbParm = dbCommand.Parameters.Add( "rtn", OleDbType.VarNumeric);
dbParm.Direction = ParameterDirection.Output;

//値のセット
dbCommand.Parameters["hi1"].Value = "ABCDE";


dbCommand.ExecuteNonQuery();
if ( int.Parse( dbCommand.Parameters["rtn"].Value.ToString() ) != 1 ) throw( new Exception("データベースの作成に失敗しました。") );

よろしくお願いします。
常連さん
会議室デビュー日: 2004/10/27
投稿数: 21
投稿日時: 2004-10-28 19:33
引用:

OleDbParameter dbParm = null;

//引数1
dbParm = dbCommand.Parameters.Add("hi1", OleDbType.VarChar, 5);

//戻り値
dbParm = dbCommand.Parameters.Add( "rtn", OleDbType.VarNumeric);
dbParm.Direction = ParameterDirection.Output;

//値のセット
dbCommand.Parameters["hi1"].Value = "ABCDE";



戻り値の設定を行ってるところで、戻り値の型の指定が間違っているようです。
"OleDbType.VarNumeric"→"OleDbType.Integer"
あと同じく戻り値のDirectionの設定ですが、戻り値なら"ParameterDirection.Out"ではなく
"ParameterDirection.ReturnValue"です。

最後にパラメータの追加は戻り値を最初に行ってその後に引数1...とした方が良いと思います。
みんみん
会議室デビュー日: 2004/10/28
投稿数: 2
投稿日時: 2004-10-28 20:33
みんみんです。
お返事ありがとうございます。
ストアド内でまだエラーになりましたが
この件は無事直りました。
ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)