Viene visualizzato un errore in una stored procedure Oracle 11g. L'errore è ...Buffer stringa di caratteri troppo piccolo errore in Oracle Stored Procedure
ORA-06502: PL/SQL: numeric or value error: character string buffer too small
sta accadendo alla riga 31, la riga che contiene out_cnt_tot := 0;
io non sono davvero sicuro perché ci sia qualcosa di sbagliato in quella linea. Un altro programmatore ha creato questa procedura e non ho molta familiarità con le procedure SQL. Qualcuno può aiutarmi a capirlo?
create or replace
PROCEDURE "FIP_BANKREC_PREP"
(
in_file_date in varchar2,
in_bank_code in varchar2,
out_cnt_apx_miss_no out integer,
out_cnt_prx_miss_no out integer,
out_cnt_apx_no_mtch out integer,
out_cnt_prx_no_mtch out integer,
out_cnt_ap_dup out integer,
out_cnt_pr_dup out integer,
out_cnt_bad out integer,
out_cnt_ap_load out integer,
out_cnt_pr_load out integer,
out_cnt_ap_not_load out integer,
out_cnt_pr_not_load out integer,
out_cnt_tot out integer,
out_message out varchar2
) as
file_date date;
ap_acct_no varchar2(16);
pr_acct_no varchar2(16);
-- ------------------------------------------------------
-- begin logic
-- ------------------------------------------------------
begin
file_date := to_date(in_file_date,'yyyymmdd');
out_cnt_tot := 0; --- THE ERROR IS ON THIS LINE ---
out_message := 'Test Message';
select brec_acct_code into ap_acct_no
from MSSU.zwkfi_bankrec_accts
where brec_acct_bank = in_bank_code
and brec_acct_type = 'AP';
select brec_acct_code into pr_acct_no
from MSSU.zwkfi_bankrec_accts
where brec_acct_bank = in_bank_code
and brec_acct_type = 'PR';
// The rest of the procedure...
Come fai a sapere che è la linea 31? Sei sicuro? Hai provato a guardare il file con l'editor esadecimale? Forse puoi individuare qualche carattere UTF-8 che è invisibile nel tuo editor ma causa problemi. –
Sembra più probabile che sia la linea dopo quella; i numeri di riga in questi messaggi a volte non sono esattamente come ti aspetteresti. Il che significa che probabilmente è la dimensione della variabile che stai passando alla procedura come 'out_message' che è troppo piccola, piuttosto che un errore nella procedura stessa. Puoi mostrare come stai chiamando questo e come vengono dichiarate le variabili per quella chiamata? –
L'unica cosa passata a out_message è quella "Test Message" letterale. Inseriremo presto dei messaggi, ma non ci siamo ancora riusciti, quindi inseriamo semplicemente un testo segnaposto. È possibile che la stringa "Test Message" sia troppo breve per quella variabile?Non ne ho mai sentito parlare prima. – grantmcconnaughey