2, с потенциальным скручиванием.
Вы, конечно, могли локализовать целую строку, как:
loginLink=Please <a href="/login">log in</a> to continue
Однако в зависимости от Ваших инструментов и Вашей группы локализации, они могли бы предпочесть для Вас делать что-то как:
// tokens in this string add html links
loginLink=Please {0}log in{1} to continue
, Который был бы моим предпочтительным методом. Вы могли использовать различный шаблон замены, если у Вас есть локализация, оснащающая, который игнорирует определенные символы. Например,
loginLink=Please %startlink%log in%endlink% to continue
Тогда выполняют замену в Вашем jsp, сервлете, или эквивалентный для любого языка, который Вы используете...
Когда вы выбираете INTO переменную и не возвращает никаких записей, вы должны получить ошибку NO DATA FOUND. Я считаю, что правильный способ написать приведенный выше код - обернуть оператор SELECT собственным блоком BEGIN / EXCEPTION / END. Пример:
...
v_final_grade NUMBER;
v_letter_grade CHAR(1);
BEGIN
BEGIN
SELECT final_grade
INTO v_final_grade
FROM enrollment
WHERE student_id = v_student_id
AND section_id = v_section_id;
EXCEPTION
WHEN NO_DATA_FOUND THEN
v_final_grade := NULL;
END;
CASE -- outer CASE
WHEN v_final_grade IS NULL THEN
...
Возможно, стоит проверить в Интернете раздел об ошибках для вашей книги.
Здесь есть пример обработки этого исключения http://www.dba-oracle.com/sf_ora_01403_no_data_found .htm
Ваш оператор SELECT
не находит данные, которые вы ищете. То есть в таблице ENROLLMENT
нет записи с заданными STUDENT_ID
и SECTION_ID
. Вы можете попробовать поставить несколько операторов DBMS_OUTPUT.PUT_LINE
перед запуском запроса, распечатав значения v_student_id
и v_section_id
. Возможно, они не содержат того, что вы ожидаете от них.