Ниже приведен скрипт функции PB, который в основном создает ссылочный номер. Этот скрипт работает в рабочей среде, но есть случаи, когда строковая переменная (ls_ivno) возвращает пустое значение, и я подозреваю, что во время этого процесса происходит тупик.Строковая переменная возвращает пустое значение
Ищет помощь для отслеживания, если это возможная проблема в этом скрипте.
String ls_branch, ls_gcode1, ls_ivprint, ls_ivno, ls_keyname
long ll_kcount
Select remarks11, remarks12, remarks13
Into :ls_branch, :ls_gcode1, :ls_ivprint
From ordersext
Where orderkey = :arg_orderkey;
ls_branch = trim(ls_branch)
ls_gcode1 = trim(ls_gcode1)
ls_ivprint = trim(ls_ivprint)
choose case ls_ivprint
case 'SIV' //format1
ls_ivno = ls_branch + right(string(today(),"YY"),1) + "U" + ls_gcode1
case 'IIV' //format2
ls_ivno = ls_branch + "Q" + string(today(),"YY")
case else //blank
ls_ivno = ' '
end choose
if ls_ivno <> ' ' then
if ls_ivprint = 'SIV' THEN
declare ncounter_invprn cursor for
select keyname, keycount
from ncounter
where filler01 = 'invprn'
order by keyname;
open ncounter_invprn;
fetch ncounter_invprn into :ls_keyname, :ll_kcount;
do while sqlca.sqlcode = 0
setpointer(hourglass!)
if ll_kcount <> 9999 then
ls_ivno += right(trim(ls_keyname),1) + f_get_ncounter(ls_keyname, 4)
close ncounter_invprn;
end if
fetch ncounter_invprn into :ls_keyname, :ll_kcount;
loop
close ncounter_invprn ;
ELSE //IIV
declare ncounter_invprn_iiv cursor for
select keyname, keycount
from ncounter
where filler01 = 'invprn_iiv'
order by keyname;
open ncounter_invprn_iiv;
fetch ncounter_invprn_iiv into :ls_keyname, :ll_kcount;
do while sqlca.sqlcode = 0
setpointer(hourglass!)
if ll_kcount <> 9999 then
ls_ivno += right(trim(ls_keyname),1) + f_get_ncounter(ls_keyname, 4)
close ncounter_invprn_iiv;
end if
fetch ncounter_invprn_iiv into :ls_keyname, :ll_kcount;
loop
close ncounter_invprn_iiv;
END IF
end if
return ls_ivno
- переменная, фактически пустая или нуль? это не то же самое ... – Seki
переменная пуста. – Alex