2

.NET 経由で Oracle クエリを実行する際に問題が発生しています。私は.NetからOracleコマンドを呼び出すのはまったく初めてなので(私はmySQLのバックグラウンドから来ています)、どんな助けも大歓迎です!

最初にクエリ文字列を作成します...

declare 
pDate date; 
pErrorCode binary_integer; 
pErrorInfo varchar2(500); 
begin 
date := to_date(:Date, 'YYYY-MM-DD'); 
AnUpdateRoutine(:VehicleID, :ContractID, :DriverID, :pDate, :pDriverContribution, pErrorCode, pErrorInfo); 
end;

次に、パラメータを追加します...

cmd2.Parameters.Add(":VehicleID", OracleDbType.Int32).Value = CInt(HiddenField.Get("ID"))
cmd2.Parameters.Add(":ContractID", OracleDbType.Int32).Value = CInt(HiddenField.Get("ContractID"))
cmd2.Parameters.Add(":DriverID", OracleDbType.Int32).Value = CInt(cbCurrentDriver.Value)
cmd2.Parameters.Add(":pDate", OracleDbType.Date).Value = Date.Now()
cmd2.Parameters.Add(":pDriverContribution", OracleDbType.NVarchar2).Value = DBNull.Value
cmd2.Parameters.Add("pErrorCode", OracleDbType.NVarchar2).Value = 0
cmd2.Parameters.Add("pErrorInfo", OracleDbType.NVarchar2).Value = 0
cmd2.ExecuteNonQuery()

ExecuteNonQuery() 呼び出しで例外が発生します... ORA-01036: 無効な変数名/番号

プロシージャーの定義

procedure AnUpdateRoutine(pVehicleID in T_FM_VEHICLE.F_VEH_ID%type,
                              pContractID in T_FM_CONTRACT.F_CON_ID%type,
                              pDriverID in T_FM_DRIVER.F_DVR_ID%type,
                              pDateTimeOn in date,
                              pDriverContribution in T_FM_DRIVER_CHG.F_DCH_DVR_CONTRIBUTION%type,
                              pErrorCode out binary_integer,
                              pErrorInfo out TErrorInfo);

pVehicleID、pContractID、pDriverID、および pDateTimeOn は必須です。

4

1 に答える 1

0

オラクルに襲われてからしばらく経っているので、間違っているかもしれませんが...

pErrorCode は :pErrorCode である必要があります

:pErrorInfo と同じ問題がありますか?

于 2015-01-13T17:14:53.367 に答える