Конечно, и это не так уж сложно, если вы правильно решите проблему и сначала не добьетесь амбиций.
По сути, вам нужны две функции: одна для анализа HTTP_ACCEPT_LANGUAGE
и создания кода языка, а другая для его получения и генерации соответствующих set
команд.
Первый может быть довольно сложным; если вам дано только «en», вы, вероятно, захотите сгенерировать «en-us», вам нужно иметь дело с выбором одного из нескольких вариантов, когда ничего не совпадает идеально, вам нужно иметь дело с искаженными значениями заголовка и так далее. Не пытайтесь решить все это сразу: сначала сделайте что-нибудь очень простое, а потом расширьте.
То же самое относится и к другой половине, генерируя команды set
, но в любом случае это довольно просто; на самом деле это просто функция поиска, хотя она может стать немного более сложной в зависимости от того, что ей предоставлено.
Что действительно сделает или сломает ваш опыт программирования на чем-то подобном, так это ваши модульные тесты. Это идеальная проблема для модульного тестирования и разработки через тестирование. Модульные тесты позволят убедиться, что когда вы что-то меняете, старая функциональность продолжает работать, и упростит добавление новой функциональности и исправление ошибок, потому что вы просто добавляете еще один тест, и у вас есть это, чтобы вести вас с этого момента. (Вам также будет проще выполнить полную переписывание одной из функций, если вы обнаружите, что в какой-то момент вы ошиблись, потому что вы легко можете убедиться, что новая версия ничего не нарушает.)
То, как вы проводите модульное тестирование в своей среде, возможно, немного выходит за рамки этого вопроса, но позвольте мне добавить несколько советов. Во-первых, если для вашей среды доступен фреймворк модульного тестирования («pl-sql-unit?»), Это здорово. Если нет, не паникуйте. Вам не нужно ничего сложного: просто набор входов и ожидаемых выходов, а также способ запустить их через функцию и сказать «все в порядке!» или показать какие-либо неверные результаты. Вероятно, вы можете написать одну простую функцию PL / SQL, которая считывает входные и ожидаемые выходные данные из таблицы и делает это для вас.