#1 2015-03-20 07:31:09

ASiwon
Member
From: Poland
Registered: 2015-01-30
Posts: 82

Problem with calling stored procedure from Oracle database

Hello,

I'm writing because I have some problem with calling stored procedure from Oracle 11 XE database using mORMot. I know that calling stored procedure is not the best solution but for now I have no another choice. But after some hours of looking the problem I'm confused and I have no idea what is wrong in my code.

I have big (93 parameters) stored procedure which writes some data to the database. Procedure works as facade template - just calls other internal procedures which performs the task. Oracle procedure header looks like:

create or replace procedure u_eks.SP_WAGONY_OBECNE_INSERT(
     -- Identyfikatory
   io_wz_id                 in out integer, --u_eks.t_wagony_zdania.wz_id%type,
   io_wz_we_id              in out integer, --u_eks.t_wagony_zdania.wz_we_id%type,
   io_wz_wp_id              in out integer, --u_eks.t_wagony_zdania.wz_wp_id%type,
     -- dane podstawienia
   i_w_nr_wagonu            in varchar2, --u_eks.t_wagony_zdania.w_nr_wagonu%type,
   i_w_seria                in varchar2, --u_eks.t_wagony_zdania.w_seria%type,
   i_w_rodz_numer           in u_eks.t_wagony_zdania.w_rodz_numer%type,
   i_w_zly_numer            in u_eks.t_wagony_zdania.w_zly_numer%type,
   i_w_tara_z_bel           in u_eks.t_wagony_zdania.w_tara_z_belki%type,
   i_w_tara_przewozowa      in u_eks.t_wagony_zdania.w_tara_przewozowa%type,
   i_w_tara_dekl_lad        in u_eks.t_wagony_podstawienia.w_tara_dekl_lad%type,
   i_w_tara_dekl_lad_rodzaj in u_eks.t_wagony_podstawienia.w_tara_dekl_lad_rodzaj%type,
   i_w_gr_obciaz            in u_eks.t_wagony_podstawienia.w_gr_obciaz%type,
   i_w_masa_lad             in u_eks.t_wagony_podstawienia.w_masa_lad%type,
   i_wp_masa_lad_przewoz    in u_eks.t_wagony_podstawienia.wp_masa_lad_przewoz%type,
   i_w_masa_tow             in u_eks.t_wagony_zdania.w_masa_tow%type,
   i_w_masa_prz_l           in u_eks.t_wagony_podstawienia.w_masa_prz_l%type,
   i_w_masa_prz_t           in u_eks.t_wagony_zdania.w_masa_prz_t%type,
   i_w_masa_przew           in u_eks.t_wagony_zdania.w_masa_przew%type,
   i_w_masa_opak_l          in u_eks.t_wagony_podstawienia.w_masa_opak_l%type,
   i_w_masa_opak_t          in u_eks.t_wagony_zdania.w_masa_opak_t%type,
   i_w_masa_wydz_lad        in u_eks.t_wagony_podstawienia.w_masa_wydz_lad%type,
   i_w_masa_wydz_tow        in u_eks.t_wagony_zdania.w_masa_wydz_tow%type,
   i_w_ilosc_osi            in u_eks.t_wagony_podstawienia.w_ilosc_osi%type,
   i_w_ilosc_szt_lad        in u_eks.t_wagony_podstawienia.w_ilosc_szt_lad%type,
   i_w_ilosc_opak_tow       in u_eks.t_wagony_zdania.w_ilosc_opak_tow%type,
   i_w_ilosc_szt_tow        in u_eks.t_wagony_zdania.w_ilosc_szt_tow%type,
   i_w_stezenie_lad         in u_eks.t_wagony_podstawienia.w_stezenie_lad%type,
   i_w_stezenie_tow         in u_eks.t_wagony_zdania.w_stezenie_tow%type,
   i_w_id_ladunku           in u_eks.t_wagony_podstawienia.w_id_ladunku%type,
   i_w_id_nadawcy           in u_eks.t_wagony_podstawienia.w_id_nadawcy%type,
   i_w_id_towaru            in u_eks.t_wagony_zdania.w_id_towaru%type,
   i_w_towar_opis_dod       in varchar2, --u_eks.t_wagony_zdania.w_towar_opis_dod%type,
   i_w_id_odbiorcy          in u_eks.t_wagony_zdania.w_id_odbiorcy%type,
   i_w_id_r25               in u_eks.t_wagony_podstawienia.w_id_r25%type,
   io_w_lp_r25              in out integer,
   i_w_id_r25t              in u_eks.t_wagony_podstawienia.w_id_r25t%type,
   io_w_lp_r25t             in out integer,
   i_w_id_lis_prz           in u_eks.t_wagony_podstawienia.w_id_lis_prz%type,
   i_w_lp_lis_prz           in u_eks.t_wagony_podstawienia.w_lp_lis_prz%type,
     -- data i czas ukończenia załadunku
   i_w_czas_uk_za           in u_eks.t_wagony_zdania.w_czas_uk_za%type,
     -- data i czas ukończenia wyładunku
   i_w_czas_uk_wy           in u_eks.t_wagony_zdania.w_czas_uk_wy%type,
   i_w_czas_uk_wy_pol_auto  in u_eks.t_wagony_zdania.w_czas_uk_wy_pol_auto%type,
     -- data i czas rozpoczęcia załadunku
   i_w_czas_roz_za          in u_eks.t_wagony_zdania.w_czas_roz_za%type,
     -- data i czas rozpoczęcia dyspozycji
   i_w_czas_dysp_od         in u_eks.t_wagony_podstawienia.w_czas_dysp_od%type,
     -- data i czas ponownego dysponowania wagonów
   i_w_czas_ponow_dysp      in u_eks.t_wagony_zdania.w_czas_ponow_dysp%type,
     -- Dodatkowe czasy pomniejszające czas pobytu
   i_w_czas_roz_odprawy     in u_eks.t_wagony_zdania.w_czas_roz_odprawy%type,
   i_w_czas_odprawy         in u_eks.t_wagony_zdania.w_czas_odprawy%type,
   i_w_czas_roz_czyn_adm    in u_eks.t_wagony_zdania.w_czas_roz_czyn_adm%type,
   i_w_czas_czyn_adm        in u_eks.t_Wagony_Zdania.w_Czas_Czyn_Adm%type,
   i_w_id_p_podst           in u_eks.t_wagony_zdania.w_id_p_podst%type,
   i_w_lp_p_podst           in u_eks.t_wagony_zdania.w_lp_p_podst%type,
   i_w_vat                  in u_eks.t_wagony_zdania.w_vat%type,
   i_w_zmiana_tary          in u_eks.t_wagony_zdania.w_zmiana_tary%type,
   i_w_podw_op_lad          in u_eks.t_wagony_zdania.w_podw_op_lad%type,
   i_w_podzial_masy_l       in u_eks.t_wagony_podstawienia.w_podzial_masy_l%type,
   i_w_podzial_masy_t       in u_eks.t_wagony_zdania.w_podzial_masy_t%type,
   i_w_akt_hamul_p          in u_eks.t_wagony_podstawienia.w_akt_hamul_p%type,
   i_w_akt_hamul_z          in u_eks.t_wagony_zdania.w_akt_hamul_z%type,
   i_w_dlugosc              in u_eks.t_wagony_zdania.w_dlugosc%type,
   i_w_ciez_ham_1           in u_eks.t_wagony_zdania.w_ciez_ham_1%type,
   i_w_ciez_ham_2           in u_eks.t_wagony_zdania.w_ciez_ham_2%type,
   i_w_ciez_ham_pr          in u_eks.t_wagony_zdania.w_ciez_ham_pr%type,
   i_w_masa_przest          in u_eks.t_wagony_zdania.w_masa_przest%type,
   i_w_typ_hamulca          in u_eks.t_wagony_zdania.w_typ_hamulca%type,
   i_w_rodzaj_hamul         in u_eks.t_wagony_zdania.w_rodzaj_hamul%type,
   i_w_hamul_oerl           in u_eks.t_wagony_zdania.w_hamul_oerl%type,
   i_w_hamul_nast           in u_eks.t_wagony_zdania.w_hamul_nast%type,
   i_wz_uzyt_wag_kod_liter  in varchar2, --u_eks.t_wagony_zdania.wz_uzyt_wag_kod_liter%type,
   i_wz_uzyt_wag_kod_cyfr   in varchar2, --u_eks.t_wagony_zdania.wz_uzyt_wag_kod_cyfr%type,
   i_w_ub_ub_id             in u_eks.t_wagony_podstawienia.w_ub_ub_id%type,
   i_wz_ub_ub_id            in u_eks.t_wagony_zdania.w_ub_ub_id%type,
   i_wz_un_un_id            in u_eks.t_wagony_zdania.w_un_un_id%type,
   i_w_cpw_id               in u_eks.t_wagony_zdania.w_cpw_id%type,
   i_w_dysp_wag_id          in integer,
   i_w_dysp_wag_typ         in number,
   i_w_import               in u_eks.t_wagony_podstawienia.w_import%type,
   i_w_eksport              in u_eks.t_wagony_zdania.w_eksport%type,
   i_w_odmowa               in u_eks.t_wagony_zdania.w_odmowa%type,
   i_w_lad_uszkodz          in u_eks.t_wagony_podstawienia.w_lad_uszkodz%type,
   i_w_ilosc_plomb_tow      in u_eks.t_wagony_zdania.w_ilosc_plomb_tow%type,
   i_we_tr_tr_id            in u_eks.t_wagony_eksp_id.we_tr_tr_id%type,
   i_w_lad_zamroz           in u_eks.t_wagony_podstawienia.w_lad_zamroz%type,
   i_w_lad_zamroz_prot      in u_eks.t_wagony_podstawienia.w_lad_zamroz_prot%type,
     -- Medium
   i_w_medium_gt_id         in u_eks.t_wagony_podstawienia.w_medium_gt_id%type,
     -- identyfikator schematu pracy wybranego dla podstawienia wagonu
   i_w_sp_sp_id             in u_eks.t_wagony_eksp_id.we_sp_sp_id%type,
     -- identyfikator wagonu z kartoteki wagonow prywatnych, ktory zostal zidentyfikowany
     -- z podstawieniem
   i_we_wi_id               in u_tab.t_wagony_id.w_w_id%type,
     -- czas wstawienia wagonu na tor
   i_we_czas_podstawienia   in u_eks.t_wagony_eksp_id.we_czas_podstawienia%type default null,
   i_we_czas_zabrania       in u_eks.t_wagony_eksp_id.we_czas_zabrania%type default null,
     -- rodzaj pobytu na bocznicy - loko/przejściowe
   i_we_pobyt_rodzaj        in u_eks.t_wagony_eksp_id.we_pobyt_rodzaj%type,
     -- Dane do integracji z systemem SAP - przybycie
   i_w_sdz_nr_zamowienia    in varchar2, --u_eks.t_wagony_podstawienia.w_sdz_nr_zamowienia%type,
   i_w_sdz_nr_pozycji       in u_eks.t_wagony_podstawienia.w_sdz_nr_pozycji%type,
     -- Dane do integracji z systemem SAP - wysyłka
   i_w_sdd_nr_dostawy       in varchar2, --u_eks.t_wagony_zdania.w_sdd_nr_dostawy%type,
   i_w_sdd_nr_pozycji       in u_eks.t_wagony_zdania.w_sdd_nr_pozycji%type)

I can call this procedure from other tools (PL/SQL Developer) or even from other Delphi components (ODAC) without any problems. But when I'm trying to call this procedure from mORMot then always exception is raised:

TSQLDBOracleStatement error: ORA-06502: PL/SQL: numeric or value error: character string buffer too small
ORA-06512: at line 2

This is strange exception, because whole procedure is executed. In the last line of the procedure I'm calling message using Oracle's pipe - everything is sent correctly. So exception is raised not inside of the procedure (it would be deeper stack of Oracle calls in exception message) but after procedure call. While setting value of the out parameters? I have no idea but if calling of the message using Oracle's pipe is called in SQL code after the procedure call it is not sent.

When I made some changes inside of the Oracle procedure then everything starts working, but this changes are only for testing purpose. I can't to bring them to the production system. This change is removing the code which gets new value for parameter: io_w_lp_r25. Value for this parameter is selected from Oracle sequence and for now has value like: 130000. Range of the integer value is not exceeded. I'm sure. If selecting value from sequences is commented then procedure is called correctly. Unfortunately I can't extract it as example to the debug purpose.

Here is a code which calls Oracle procedure using mORMot:

procedure TBkWazeniaImportyPodstaw.PodstawienieDodajWagony;
const
  cSQLExec =
    'begin' + #13#10 +
    '  ' + cSpWagonyObecneInsert + '(' + #13#10 +
        'io_wz_id                 => ?,' + #13#10 +  // 1
        'io_wz_we_id              => ?,' + #13#10 +  // 2
        'io_wz_wp_id              => ?,' + #13#10 +  // 3
        'i_w_nr_wagonu            => ?,' + #13#10 +  // 4
        'i_w_seria                => ?,' + #13#10 +  // 5
        'i_w_rodz_numer           => ?,' + #13#10 +  // 6
        'i_w_zly_numer            => ?,' + #13#10 +  // 7
        'i_w_tara_z_bel           => ?,' + #13#10 +  // 8
        'i_w_tara_dekl_lad        => ?,' + #13#10 +  // 9
        'i_w_tara_dekl_lad_rodzaj => ?,' + #13#10 +  // 10
        'i_w_tara_przewozowa      => ?,' + #13#10 +  // 11
        'i_w_gr_obciaz            => ?,' + #13#10 +  // 12
        'i_w_masa_lad             => ?,' + #13#10 +  // 13
        'i_wp_masa_lad_przewoz    => ?,' + #13#10 +  // 14
        'i_w_masa_tow             => ?,' + #13#10 +  // 15
        'i_w_masa_prz_l           => ?,' + #13#10 +  // 16
        'i_w_masa_prz_t           => ?,' + #13#10 +  // 17
        'i_w_masa_przew           => ?,' + #13#10 +  // 18
        'i_w_masa_opak_l          => ?,' + #13#10 +  // 19
        'i_w_masa_opak_t          => ?,' + #13#10 +  // 20
        'i_w_masa_wydz_lad        => ?,' + #13#10 +  // 21
        'i_w_masa_wydz_tow        => ?,' + #13#10 +  // 22
        'i_w_ilosc_osi            => ?,' + #13#10 +  // 23
        'i_w_ilosc_szt_lad        => ?,' + #13#10 +  // 24
        'i_w_ilosc_opak_tow       => ?,' + #13#10 +  // 25
        'i_w_ilosc_szt_tow        => ?,' + #13#10 +  // 26
        'i_w_stezenie_lad         => ?,' + #13#10 +  // 27
        'i_w_stezenie_tow         => ?,' + #13#10 +  // 28
        'i_w_id_ladunku           => ?,' + #13#10 +  // 29
        'i_w_id_nadawcy           => ?,' + #13#10 +  // 30
        'i_w_id_towaru            => ?,' + #13#10 +  // 31
        'i_w_towar_opis_dod       => ?,' + #13#10 +  // 32
        'i_w_id_odbiorcy          => ?,' + #13#10 +  // 33
        'i_w_id_r25               => ?,' + #13#10 +  // 34
        'io_w_lp_r25              => ?,' + #13#10 +  // 35
        'i_w_id_r25t              => ?,' + #13#10 +  // 36
        'io_w_lp_r25t             => ?,' + #13#10 +  // 37
        'i_w_id_lis_prz           => ?,' + #13#10 +  // 38
        'i_w_lp_lis_prz           => ?,' + #13#10 +  // 39
        'i_w_czas_uk_za           => ?,' + #13#10 +  // 40
        'i_w_czas_uk_wy           => ?,' + #13#10 +  // 41
        'i_w_czas_uk_wy_pol_auto  => ?,' + #13#10 +  // 42
        'i_w_czas_roz_za          => ?,' + #13#10 +  // 43
        'i_w_czas_dysp_od         => ?,' + #13#10 +  // 44
        'i_w_czas_ponow_dysp      => ?,' + #13#10 +  // 45
        'i_w_czas_roz_odprawy     => ?,' + #13#10 +  // 46
        'i_w_czas_odprawy         => ?,' + #13#10 +  // 47
        'i_w_czas_roz_czyn_adm    => ?,' + #13#10 +  // 48
        'i_w_czas_czyn_adm        => ?,' + #13#10 +  // 49
        'i_w_id_p_podst           => ?,' + #13#10 +  // 50
        'i_w_lp_p_podst           => ?,' + #13#10 +  // 51
        'i_w_vat                  => ?,' + #13#10 +  // 52
        'i_w_zmiana_tary          => ?,' + #13#10 +  // 53
        'i_w_podw_op_lad          => ?,' + #13#10 +  // 54
        'i_w_podzial_masy_l       => ?,' + #13#10 +  // 55
        'i_w_podzial_masy_t       => ?,' + #13#10 +  // 56
        'i_w_akt_hamul_p          => ?,' + #13#10 +  // 57
        'i_w_akt_hamul_z          => ?,' + #13#10 +  // 58
        'i_w_dlugosc              => ?,' + #13#10 +  // 59
        'i_w_ciez_ham_1           => ?,' + #13#10 +  // 60
        'i_w_ciez_ham_2           => ?,' + #13#10 +  // 61
        'i_w_ciez_ham_pr          => ?,' + #13#10 +  // 62
        'i_w_masa_przest          => ?,' + #13#10 +  // 63
        'i_w_typ_hamulca          => ?,' + #13#10 +  // 64
        'i_w_rodzaj_hamul         => ?,' + #13#10 +  // 65
        'i_w_hamul_oerl           => ?,' + #13#10 +  // 66
        'i_w_hamul_nast           => ?,' + #13#10 +  // 67
        'i_wz_uzyt_wag_kod_liter  => ?,' + #13#10 +  // 68
        'i_wz_uzyt_wag_kod_cyfr   => ?,' + #13#10 +  // 69
        'i_w_ub_ub_id             => ?,' + #13#10 +  // 70
        'i_wz_ub_ub_id            => ?,' + #13#10 +  // 71
        'i_wz_un_un_id            => ?,' + #13#10 +  // 72
        'i_w_cpw_id               => ?,' + #13#10 +  // 73
        'i_w_dysp_wag_id          => ?,' + #13#10 +  // 74
        'i_w_dysp_wag_typ         => ?,' + #13#10 +  // 75
        'i_w_import               => ?,' + #13#10 +  // 76
        'i_w_eksport              => ?,' + #13#10 +  // 77
        'i_w_odmowa               => ?,' + #13#10 +  // 78
        'i_w_lad_uszkodz          => ?,' + #13#10 +  // 79
        'i_w_ilosc_plomb_tow      => ?,' + #13#10 +  // 80
        'i_we_tr_tr_id            => ?,' + #13#10 +  // 81
        'i_w_lad_zamroz           => ?,' + #13#10 +  // 82
        'i_w_lad_zamroz_prot      => ?,' + #13#10 +  // 83
        'i_w_medium_gt_id         => ?,' + #13#10 +  // 84
        'i_w_sp_sp_id             => ?,' + #13#10 +  // 85
        'i_we_wi_id               => ?,' + #13#10 +  // 86
        'i_we_czas_podstawienia   => ?,' + #13#10 +  // 87
        'i_we_czas_zabrania       => ?,' + #13#10 +  // 88
        'i_we_pobyt_rodzaj        => ?,' + #13#10 +  // 89
        'i_w_sdz_nr_zamowienia    => ?,' + #13#10 +  // 90
        'i_w_sdz_nr_pozycji       => ?,' + #13#10 +  // 91
        'i_w_sdd_nr_dostawy       => ?,' + #13#10 +  // 92
        'i_w_sdd_nr_pozycji       => ?);' + #13#10 + // 93*)
    'end;';
var
  item: TBkWagonPodstawienie;
  sql: string;
  stmt: ISQLDBStatement;
begin
  sql := cSQLExec;
  while sql.Contains('  ') do
    sql := StringReplace(sql, '  ', ' ', [rfReplaceAll]);
  stmt := FDbConnection.NewStatementPrepared(sql, False, True);
  for item in FWagonyPodstawienia do
    PodstawienieDodajWagon(item, stmt);
end;

procedure TBkWazeniaImportyPodstaw.PodstawienieDodajWagon(const APodstawienie: TBkWagonPodstawienie;
  const AStatement: ISQLDBStatement);
var
  i: Integer;
begin
    // Domyślne ustawienie wszystkich parametrów na null.
  for i := 1 to 3 do
    AStatement.BindNull(i, paramInOut);
  for i := 4 to 93 do
    AStatement.BindNull(i);
    // Numer wagonu
  AStatement.BindTextS(4, APodstawienie.WagonNumer, paramIn);
  AStatement.BindTextS(5, APodstawienie.WagonSeria, paramIn);
  AStatement.Bind(6, Integer(APodstawienie.WagonNumerRodzaj), paramIn);
  AStatement.Bind(7, Integer(APodstawienie.WagonNumerBlad), paramIn);
  AStatement.Bind(12, APodstawienie.WagonGranicaObciazenia, paramIn);
  AStatement.Bind(23, APodstawienie.WagonIloscOsi, paramIn);
    // Dane ładunku
  AStatement.Bind(9, APodstawienie.TaraPrzybyciaDekl, paramIn);
  AStatement.Bind(13, APodstawienie.MasaLadunkuDekl, paramIn);
    // Dokument podstawienia
  AStatement.Bind(34, DokumentPodstawieniaId, paramIn);
  AStatement.BindNull(35, paramInOut, ftInt64);
  AStatement.BindNull(36, paramIn);
  AStatement.BindNull(37, paramInOut, ftInt64);
    // Flaga obliczania automatycznego czasu wyładunku
  AStatement.Bind(42, 0, paramIn);
    // Flaga ponownego podstawienia
  AStatement.Bind(51, 0, paramIn);
    // Flaga zmiany tary
  AStatement.Bind(53, 0, paramIn);
  Astatement.BindCurrency(52, 0, paramIn);
    // Flaga podwójnej operacji ładunkowej
  AStatement.Bind(54, 0, paramIn);
    // Podział masy ładunku/towaru
  AStatement.Bind(55, 0, paramIn);
  AStatement.Bind(56, 0, paramIn);
    // Aktywne hamulce na przybyciu/zdaniu.
  AStatement.Bind(57, 1, paramIn);
  AStatement.Bind(58, 1, paramIn);
    // Flaga hamulec typu oerlikon
  AStatement.Bind(66, 0, paramIn);
    // Flaga hamulec z nastawiaczem
  AStatement.Bind(67, 0, paramIn);
    // Użytkownik bocznicy
  AStatement.Bind(70, PodstawienieParametry.UzytkownikBocznicyId, paramIn);
    // Dysponowanie wagonu typ
  AStatement.Bind(75, 1, paramIn);
    // Import
  AStatement.Bind(76, 0, paramIn);
    // Eksport
  AStatement.Bind(77, 0, paramIn);
    // Odmowa wagonu
  AStatement.Bind(78, 0, paramIn);
    // Ładunek uszkodzony
  AStatement.Bind(79, 0, paramIn);
    // Ilość plomb towaru
  AStatement.Bind(80, 0, paramIn);
    // Tor podstawienia wagonu
  AStatement.Bind(81, PodstawienieParametry.PodstawienieTorId, paramIn);
    // Ładunek zamrożony
  AStatement.Bind(82, 0, paramIn);
    // Ładunek zamrożony - protokół
  AStatement.Bind(83, 0, paramIn);
    // Powiązanie z wagonem z kartoteki... - trzeba dorobić w przyszłości.
    //'    i_we_wi_id                  => ?,' + #13#10 +  // 86
  AStatement.BindDateTime(87, PodstawienieParametry.PodstawienieCzas, paramIn);
    // Rodzaj pobytu - Loko
  AStatement.BindTextS(89, cPobytLoko, paramIn);
  AStatement.ExecutePrepared;
end;

And I'm really sure, that varchar parameters values have correct length. Here is also exception from log file:

20150320 01032624 SQL   		TSQLDBOracleStatement(7FE21BB0) begin   U_EKS.SP_WAGONY_OBECNE_INSERT(  io_wz_id => NULL,  io_wz_we_id => NULL,  io_wz_wp_id => NULL,  i_w_nr_wagonu => '31-51-5345282-8',  i_w_seria => '',  i_w_rodz_numer => 0,  i_w_zly_numer => 0,  i_w_tara_z_bel => NULL,  i_w_tara_dekl_lad => 0,  i_w_tara_dekl_lad_rodzaj => NULL,  i_w_tara_przewozowa => NULL,  i_w_gr_obciaz => 0,  i_w_masa_lad => 0,  i_wp_masa_lad_przewoz => NULL,  i_w_masa_tow => NULL,  i_w_masa_prz_l => NULL,  i_w_masa_prz_t => NULL,  i_w_masa_przew => NULL,  i_w_masa_opak_l => NULL,  i_w_masa_opak_t => NULL,  i_w_masa_wydz_lad => NULL,  i_w_masa_wydz_tow => NULL,  i_w_ilosc_osi => 0,  i_w_ilosc_szt_lad => NULL,  i_w_ilosc_opak_tow => NULL,  i_w_ilosc_szt_tow => NULL,  i_w_stezenie_lad => NULL,  i_w_stezenie_tow => NULL,  i_w_id_ladunku => NULL,  i_w_id_nadawcy => NULL,  i_w_id_towaru => NULL,  i_w_towar_opis_dod => NULL,  i_w_id_odbiorcy => NULL,  i_w_id_r25 => 20941,  io_w_lp_r25 => NULL,  i_w_id_r25t => NULL,  io_w_lp_r25t => NULL,  i_w_id_lis_prz => NULL,  i_w_lp_lis_prz => NULL,  i_w_czas_uk_za => NULL,  i_w_czas_uk_wy => NULL,  i_w_czas_uk_wy_pol_auto => 0,  i_w_czas_roz_za => NULL,  i_w_czas_dysp_od => NULL,  i_w_czas_ponow_dysp => NULL,  i_w_czas_roz_odprawy => NULL,  i_w_czas_odprawy => NULL,  i_w_czas_roz_czyn_adm => NULL,  i_w_czas_czyn_adm => NULL,  i_w_id_p_podst => NULL,  i_w_lp_p_podst => 0,  i_w_vat => 0,  i_w_zmiana_tary => 0,  i_w_podw_op_lad => 0,  i_w_podzial_masy_l => 0,  i_w_podzial_masy_t => 0,  i_w_akt_hamul_p => 1,  i_w_akt_hamul_z => 1,  i_w_dlugosc => NULL,  i_w_ciez_ham_1 => NULL,  i_w_ciez_ham_2 => NULL,  i_w_ciez_ham_pr => NULL,  i_w_masa_przest => NULL,  i_w_typ_hamulca => NULL,  i_w_rodzaj_hamul => NULL,  i_w_hamul_oerl => 0,  i_w_hamul_nast => 0,  i_wz_uzyt_wag_kod_liter => NULL,  i_wz_uzyt_wag_kod_cyfr => NULL,  i_w_ub_ub_id => 324,  i_wz_ub_ub_id => NULL,  i_wz_un_un_id => NULL,  i_w_cpw_id => NULL,  i_w_dysp_wag_id => NULL,  i_w_dysp_wag_typ => 1,  i_w_import => 0,  i_w_eksport => 0,  i_w_odmowa => 0,  i_w_lad_uszkodz => 0,  i_w_ilosc_plomb_tow => 0,  i_w... (truncated) length=2400
20150320 01032624 EXC   		ESQLDBOracle {"Statement":{"SQL":"begin\r\n U_EKS.SP_WAGONY_OBECNE_INSERT(\r\nio_wz_id => ?,\r\nio_wz_we_id => ?,\r\nio_wz_wp_id => ?,\r\ni_w_nr_wagonu => ?,\r\ni_w_seria => ?,\r\ni_w_rodz_numer => ?,\r\ni_w_zly_numer => ?,\r\ni_w_tara_z_bel => ?,\r\ni_w_tara_dekl_lad => ?,\r\ni_w_tara_dekl_lad_rodzaj => ?,\r\ni_w_tara_przewozowa => ?,\r\ni_w_gr_obciaz => ?,\r\ni_w_masa_lad => ?,\r\ni_wp_masa_lad_przewoz => ?,\r\ni_w_masa_tow => ?,\r\ni_w_masa_prz_l => ?,\r\ni_w_masa_prz_t => ?,\r\ni_w_masa_przew => ?,\r\ni_w_masa_opak_l => ?,\r\ni_w_masa_opak_t => ?,\r\ni_w_masa_wydz_lad => ?,\r\ni_w_masa_wydz_tow => ?,\r\ni_w_ilosc_osi => ?,\r\ni_w_ilosc_szt_lad => ?,\r\ni_w_ilosc_opak_tow => ?,\r\ni_w_ilosc_szt_tow => ?,\r\ni_w_stezenie_lad => ?,\r\ni_w_stezenie_tow => ?,\r\ni_w_id_ladunku => ?,\r\ni_w_id_nadawcy => ?,\r\ni_w_id_towaru => ?,\r\ni_w_towar_opis_dod => ?,\r\ni_w_id_odbiorcy => ?,\r\ni_w_id_r25 => ?,\r\nio_w_lp_r25 => ?,\r\ni_w_id_r25t => ?,\r\nio_w_lp_r25t => ?,\r\ni_w_id_lis_prz => ?,\r\ni_w_lp_lis_prz => ?,\r\ni_w_czas_uk_za => ?,\r\ni_w_czas_uk_wy => ?,\r\ni_w_czas_uk_wy_pol_auto => ?,\r\ni_w_czas_roz_za => ?,\r\ni_w_czas_dysp_od => ?,\r\ni_w_czas_ponow_dysp => ?,\r\ni_w_czas_roz_odprawy => ?,\r\ni_w_czas_odprawy => ?,\r\ni_w_czas_roz_czyn_adm => ?,\r\ni_w_czas_czyn_adm => ?,\r\ni_w_id_p_podst => ?,\r\ni_w_lp_p_podst => ?,\r\ni_w_vat => ?,\r\ni_w_zmiana_tary => ?,\r\ni_w_podw_op_lad => ?,\r\ni_w_podzial_masy_l => ?,\r\ni_w_podzial_masy_t => ?,\r\ni_w_akt_hamul_p => ?,\r\ni_w_akt_hamul_z => ?,\r\ni_w_dlugosc => ?,\r\ni_w_ciez_ham_1 => ?,\r\ni_w_ciez_ham_2 => ?,\r\ni_w_ciez_ham_pr => ?,\r\ni_w_masa_przest => ?,\r\ni_w_typ_hamulca => ?,\r\ni_w_rodzaj_hamul => ?,\r\ni_w_hamul_oerl => ?,\r\ni_w_hamul_nast => ?,\r\ni_wz_uzyt_wag_kod_liter => ?,\r\ni_wz_uzyt_wag_kod_cyfr => ?,\r\ni_w_ub_ub_id => ?,\r\ni_wz_ub_ub_id => ?,\r\ni_wz_un_un_id => ?,\r\ni_w_cpw_id => ?,\r\ni_w_dysp_wag_id => ?,\r\ni_w_dysp_wag_typ => ?,\r\ni_w_import => ?,\r\ni_w_eksport => ?,\r\ni_w_odmowa => ?,\r\ni_w_lad_uszkodz => ?,\r\ni_w_ilosc_plomb_tow => ?,\r\ni_we_tr_tr_id => ?,\r\ni_w_lad_zamroz => ?,\r\ni_w_lad_zamroz_prot => ?,\r\ni_w_medium_gt_id => ?,\r\ni_w_sp_sp_id => ?,\r\ni_we_wi_id => ?,\r\ni_we_czas_podstawienia => ?,\r\ni_we_czas_zabrania => ?,\r\ni_we_pobyt_rodzaj => ?,\r\ni_w_sdz_nr_zamowienia => ?,\r\ni_w_sdz_nr_pozycji => ?,\r\ni_w_sdd_nr_dostawy => ?,\r\ni_w_sdd_nr_pozycji => ?);\r\nend","SQLWithInlinedParams":"begin\r\n U_EKS.SP_WAGONY_OBECNE_INSERT(\r\nio_wz_id => NULL,\r\nio_wz_we_id => NULL,\r\nio_wz_wp_id => NULL,\r\ni_w_nr_wagonu => '31-51-5345282-8',\r\ni_w_seria => '',\r\ni_w_rodz_numer => 0,\r\ni_w_zly_numer => 0,\r\ni_w_tara_z_bel => NULL,\r\ni_w_tara_dekl_lad => 0,\r\ni_w_tara_dekl_lad_rodzaj => NULL,\r\ni_w_tara_przewozowa => NULL,\r\ni_w_gr_obciaz => 0,\r\ni_w_masa_lad => 0,\r\ni_wp_masa_lad_przewoz => NULL,\r\ni_w_masa_tow => NULL,\r\ni_w_masa_prz_l => NULL,\r\ni_w_masa_prz_t => NULL,\r\ni_w_masa_przew => NULL,\r\ni_w_masa_opak_l => NULL,\r\ni_w_masa_opak_t => NULL,\r\ni_w_masa_wydz_lad => NULL,\r\ni_w_masa_wydz_tow => NULL,\r\ni_w_ilosc_osi => 0,\r\ni_w_ilosc_szt_lad => NULL,\r\ni_w_ilosc_opak_tow => NULL,\r\ni_w_ilosc_szt_tow => NULL,\r\ni_w_stezenie_lad => NULL,\r\ni_w_stezenie_tow => NULL,\r\ni_w_id_ladunku => NULL,\r\ni_w_id_nadawcy => NULL,\r\ni_w_id_towaru => NULL,\r\ni_w_towar_opis_dod => NULL,\r\ni_w_id_odbiorcy => NULL,\r\ni_w_id_r25 => 20941,\r\nio_w_lp_r25 => NULL,\r\ni_w_id_r25t => NULL,\r\nio_w_lp_r25t => NULL,\r\ni_w_id_lis_prz => NULL,\r\ni_w_lp_lis_prz => NULL,\r\ni_w_czas_uk_za => NULL,\r\ni_w_czas_uk_wy => NULL,\r\ni_w_czas_uk_wy_pol_auto => 0,\r\ni_w_czas_roz_za => NULL,\r\ni_w_czas_dysp_od => NULL,\r\ni_w_czas_ponow_dysp => NULL,\r\ni_w_czas_roz_odprawy => NULL,\r\ni_w_czas_odprawy => NULL,\r\ni_w_czas_roz_czyn_adm => NULL,\r\ni_w_czas_czyn_adm => NULL,\r\ni_w_id_p_podst => NULL,\r\ni_w_lp_p_podst => 0,\r\ni_w_vat => 0,\r\ni_w_zmiana_tary => 0,\r\ni_w_podw_op_lad => 0,\r\ni_w_podzial_masy_l => 0,\r\ni_w_podzial_masy_t => 0,\r\ni_w_akt_hamul_p => 1,\r\ni_w_akt_hamul_z => 1,\r\ni_w_dlugosc => NULL,\r\ni_w_ciez_ham_1 => NULL,\r\ni_w_ciez_ham_2 => NULL,\r\ni_w_ciez_ham_pr => NULL,\r\ni_w_masa_przest => NULL,\r\ni_w_typ_hamulca => NULL,\r\ni_w_rodzaj_hamul => NULL,\r\ni_w_hamul_oerl => 0,\r\ni_w_hamul_nast => 0,\r\ni_wz_uzyt_wag_kod_liter => NULL,\r\ni_wz_uzyt_wag_kod_cyfr => NULL,\r\ni_w_ub_ub_id => 324,\r\ni_wz_ub_ub_id => NULL,\r\ni_wz_un_un_id => NULL,\r\ni_w_cpw_id => NULL,\r\ni_w_dysp_wag_id => NULL,\r\ni_w_dysp_wag_typ => 1,\r\ni_w_import => 0,\r\ni_w_eksport => 0,\r\ni_w_odmowa => 0,\r\ni_w_lad_uszkodz => 0,\r\ni_w_ilosc_plomb_tow => 0,\r\ni_we_tr_tr_id => 202,\r\ni_w_lad_zamroz => 0,\r\ni_w_lad_zamroz_prot => 0,\r\ni_w_medium_gt_id => NULL,\r\ni_w_sp_sp_id => NULL,\r\ni_we_wi_id => NULL,\r\ni_we_czas_podstawienia => NULL,\r\ni_we_czas_zabrania => NULL,\r\ni_we_pobyt_rodzaj => 'L',\r\ni_w_sdz_nr_zamowienia => NULL,\r\ni_w_sdz_nr_pozycji => NULL,\r\ni_w_sdd_nr_dostawy => NULL,\r\ni_w_sdd_nr_pozycji => NULL);\r\nend","CurrentRow":0,"TotalRowsRetrieved":0,"Connection":{"Connected":true,"ServerTimeStampAtConnection":"2015-03-20T01:03:26","TotalConnectionCount":1,"TransactionCount":1,"InTransaction":true,"RollbackOnDisconnect":true,"LastErrorMessage":"","LastErrorWasAboutConnection":false,"Properties":{"ClientVersion":"oci.dll rev. 11.2.0.2","EnvironmentInitializationMode":7,"InternalBufferSize":131072,"RowsPrefetchSize":131072,"BlobPrefetchSize":4096,"StatementCacheSize":30,"Engine":"Oracle","ServerName":"xe","DatabaseName":"","UserID":"system","DBMS":2,"DBMSEngineName":"Oracle","BatchSendingAbilities":13,"BatchMaxSentAtOnce":10000,"LoggedSQLMaxSize":0,"LogSQLStatementOnException":false,"ForcedSchemaName":"","UseCache":true,"RollbackOnDisconnect":true,"StoreVoidStringAsNull":false}}},"Message":"TSQLDBOracleStatement error: ORA-06502: PL/SQL: numeric or value error: character string buffer too small\nORA-06512: at line 2"} at 00A80B14  stack trace API 008FF874 008FF89C 5005FDB8 77B10243 77B109BF 00A80B14 00A8572D 00A84FF3 059762BB 05976395 0597562B 05978302 009A170B 
20150320 01032624 DB    		TSQLDBOracleStatement(7FE21BB0) 0 row(s) in 6.45ms

I'm still using mORMot from 16 March 2015 09:16:18, revision 1389 from GitHub svn repository and Delphi XE4.


best regards
Adam Siwon

Offline

#2 2015-03-20 09:00:12

ab
Administrator
From: France
Registered: 2010-06-21
Posts: 14,206
Website

Re: Problem with calling stored procedure from Oracle database

Sounds like if BindNull() as paramInOut is not handled as expected.

Offline

#3 2015-03-20 10:17:34

ASiwon
Member
From: Poland
Registered: 2015-01-30
Posts: 82

Re: Problem with calling stored procedure from Oracle database

Yes, When I have changed BindNull to Bind for all InOut parameters then the procedure is called correctly. This change I can use in my production environment and for now this problem is solved for me. Thank you very much for help.


best regards
Adam Siwon

Offline

Board footer

Powered by FluxBB