Ado.net problem z przekazaniem parametrow do procedury

0

Mam taka proceduer

 create or replace
PACKAGE BODY asp as

procedure zapisz( wnr varchar2, windeks varchar2, ilosc numeric, wkoment varchar2 )as

	czy_haslo varchar2(10);
	BEGIN	
  if czy_haslo != null then
		czy_haslo := 'empty';
    end if;


END zapisz;

end asp;

problem jest z ilosc numeric bo gdy chce to wywolac w ten sposób

 private int Zamow(string user, string indeks, int magazyn, int dostawa, string faktura, string komentarz, int ilosc)
        {
            decimal tmp = ilosc;
            OleDbConnection con = new OleDbConnection(connectionstring);
            OleDbCommand cmd = new OleDbCommand("asp.zapisz", con);
            cmd.CommandType = CommandType.StoredProcedure;

            cmd.Parameters.AddWithValue("wnr", user);
           
            cmd.Parameters.AddWithValue("windeks", indeks);
           
            cmd.Parameters.AddWithValue("komentarz", komentarz);
             cmd.Parameters.AddWithValue("ilosc",ilosc);

            //cmd.Parameters.Add("valu_e", OleDbType.Integer).Direction = ParameterDirection.Output;

            con.Open();

            cmd.ExecuteNonQuery();

            //int Count = (int)cmd.Parameters["valu_e"].Value;

           

            return 0;
        }
 

wyskaskuje mi błąd

 ORA-06502: PL/SQL: błąd liczby lub wartości: błąd konwersji znaku do liczby
ORA-06512: przy linia 1
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Data.OleDb.OleDbException: ORA-06502: PL/SQL: błąd liczby lub wartości: błąd konwersji znaku do liczby
ORA-06512: przy linia 1

Source Error:

Line 52:             con.Open();
Line 53: 
Line 54:             cmd.ExecuteNonQuery();
Line 55: 
Line 56:             //int Count = (int)cmd.Parameters["valu_e"].Value;

gdy zmienie ilosc numeric na ilosc varchar2 i wywołuje cmd.Parameters.AddWithValue("ilosc",ilosc.ToString()); nie wywala wtedy błędu

0

Ta procedura tak naprawde nic nie robi ale to nie wazne

0

cmd.Parameters.Add("@SomeID", SqlDbType.Int, 4).Value = _someID; zamiast cmd.Parameters.AddWithValue("wnr", user); oczywiście trzeba tam wstawić odpowiednie nazwy parametru, typu, wielkości i wartość

0

Strzelam, że po pierwsze, to nazwy parametrów poprzedza się małpą, czyli np. tak: cmd.Parameters.AddWithValue("@wnr", user);

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.