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

VB.netでストアド実行

1
投稿者投稿内容
KOU
会議室デビュー日: 2004/07/07
投稿数: 3
投稿日時: 2004-07-07 21:14
OS:Windows2000
言語:VB.net
接続:ADO
プロバイダ:MSDAORA

ストアドファンクションをVB.netから呼び出し戻り値を取得したいのですが、
「ORA-06550: 行 1、列 18:
PLS-00306: 'CREATE_JUKY'の呼出しで、引数の数または型が正しくありません。
ORA-06550: 行 1、列 7:
PL/SQL: Statement ignored」
とエラーになってしまいます。ストアドの宣言(?)部分は
function CREATE_JUKY(
JKNO_IN in number,
PLCD_IN in number,
JDATE1_IN in date,
JDATE2_IN in date,
COURSE_CODE_IN in varchar2,
GROUP_CODE_IN in varchar2,
GROUP_TYPE_IN in number,
TABLE_NAME_IN in varchar2
) return number
です。
OleDB.OleDbType.Numericなどの指定が間違っているのでしょうか?
それともほかに何か間違いがあるのでしょうか?

以下VB.net部分
'ストアド名を渡す
DBComd.CommandText = "PKG_JOKEN.CREATE_JUKY"
'タイプ変更
DBComd.CommandType = CommandType.StoredProcedure

'戻り値
DBParm = DBComd.Parameters.Add("RET", OleDB.OleDbType.Numeric)
DBParm.Direction = ParameterDirection.ReturnValue

'パラメータ1
DBParm = DBComd.Parameters.Add("JKNO_IN", OleDB.OleDbType.Numeric)
DBParm.Direction = ParameterDirection.Input
DBParm.Value = P_strDispInfo(PC_JKNO)

'パラメータ2
DBParm = DBComd.Parameters.Add("PLCD_IN", OleDB.OleDbType.Numeric)
DBParm.Direction = ParameterDirection.Input
DBParm.Value = P_strDispInfo(PC_PLCD)

'パラメータ3
DBParm = DBComd.Parameters.Add("JDATE1_IN", OleDB.OleDbType.DBDate)
DBParm.Direction = ParameterDirection.Input
DBParm.Value = P_strDispInfo(PC_YMD1)

'パラメータ4
DBParm = DBComd.Parameters.Add("JDATE2_IN", OleDB.OleDbType.DBDate)
DBParm.Direction = ParameterDirection.Input
DBParm.Value = P_strDispInfo(PC_YMD2)

'パラメータ5
DBParm = DBComd.Parameters.Add("COURSE_CODE_IN", OleDB.OleDbType.VarChar, Len(strcscd))
DBParm.Direction = ParameterDirection.Input
DBParm.Value = strcscd

'パラメータ6
DBParm = DBComd.Parameters.Add("GROUP_CODE_IN", OleDB.OleDbType.VarChar, Len(strgrpcode))
DBParm.Direction = ParameterDirection.Input
DBParm.Value = strgrpcode

'パラメータ7
DBParm = DBComd.Parameters.Add("GROUP_TYPE_IN", OleDB.OleDbType.Numeric)
DBParm.Direction = ParameterDirection.Input
DBParm.Value = P_strDispInfo(PC_GRPCD)

'パラメータ8
DBParm = DBComd.Parameters.Add("TABLE_NAME_IN", OleDB.OleDbType.VarChar, Len(strTblName))
DBParm.Direction = ParameterDirection.Input
DBParm.Value = strTblName

'データ読み込み
DBComd.ExecuteNonQuery()
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-07-08 09:31
 FUNCTIONって、呼び出せるんでしたっけ?PROCEDUREだけじゃなかったでしたっけ?FUNCTIONは、

SELECT function FROM DUAL

で呼び出したような?
KOU
会議室デビュー日: 2004/07/07
投稿数: 3
投稿日時: 2004-07-08 09:55
書き方が悪かったようです。
正確にはオラクルのパッケージ本体にあるFunctionを呼び出すです。
パラメータがVarChar2型の1つだけで戻り値がNumber型という別のものは呼び出して処理できています。
Date型のパラメータの指定が悪いのかと思っているのですが何を指定しても同様のエラーになってしまいます。
KOU
会議室デビュー日: 2004/07/07
投稿数: 3
投稿日時: 2004-07-08 10:14
解決しました。
一部パラメータに値なし状態が発生していたようです。
お手数をおかけしました。
1

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