Работая над производственной проблемой, я наткнулся на что-то, что, на мой взгляд, было странным в операторе SELECT в PB.
По сути, у меня есть простой SQL, который выбирает переменную. Я предполагаю, что оригинальный разработчик (я только поддерживаю этот код) ожидал только одну строку в этом случае.
....
//
Date ld_CutOff
....
SELECT TO_DATE(PARM_VALUE, 'DD-MON')
INTO :ld_CutOff
FROM SYSPARM
WHERE PARM_NAME = 'CUTOFF_DATE' ;
....
Теперь в таблице более 1, которые соответствуют критериям. Таким образом, SQL допустил ошибку (выберите Возвращено более 1 строки), как и ожидалось. (Исходя из предыдущего опыта в PB и PL / SQL), я ожидал, что переменная хоста будет нулевой (01.01.1900 в этом случае). К моему удивлению, SQL фактически установил для переменной 1-е значение даты (или это последнее значение?), Возвращаемое SQL.
(К вашему сведению, я включил трассировку SQL: кажется, что он продолжает извлекать все строки, поэтому я предполагаю, что это будет последнее значение строки, помещенное в локальную переменную?)
Я исправляю SQL, но мне просто интересно узнать, как PB справляется с этим. Это нормальное поведение для PB / SQL или я ожидаю поведение PL / SQL в PB ?? Версии, которые я использую: PB 10.2.1 (Build 9671) и Oracle 10g. Большое спасибо за любые комментарии или предложения.
Sam