В настоящее время я пытаюсь очистить некоторые хранимые процедуры. Есть около 20 из них, которые выглядят очень похожими и выполняют многие из одних и тех же вещей, но имеют несколько разные параметры и фильтруют данные по-разному.Должен ли я использовать временные таблицы для вложенных хранимых процедур?
По большей части все сохраненные процессы начинаются с загрузки некоторых данных в одну или две переменные таблицы (которые обычно различаются в зависимости от процессов). После этого весь код для каждого sproc более или менее одинаковый. Они выполняют некоторые протоколирования и применяют некоторые дополнительные общие фильтры.
Я хотел по крайней мере превратить общие части в хранимые процедуры, чтобы код был легче читать, и нам не нужно было бы открывать 20 процедур для обновления одной и той же строки sql, но использование табличных переменных предотвращает его. Мы используем Sql Server 2005, и, насколько мне известно, мы не можем использовать параметры табличных значений в наших хранимых процедурах.
Мы могли бы, однако, изменить все переменные таблицы на временные таблицы и ссылаться на них в новых общих хранимых процедурах. Я предполагаю, что это довольно распространенная практика, но хотелось знать, действительно ли это была хорошая идея.
Во вложенных хранимых процедурах следует предположить, что временная таблица уже создана в другом месте и просто запрашивает ее? Я могу проверить, существует ли таблица, но что, если это не так? Есть ли хорошая альтернатива этому в 2005 году? Это запутывает для других разработчиков, которые открывают один из вложенных хранимых процессов и видят временную таблицу, созданную в другом месте? Мне просто нужно добавить много полезных отзывов?
В вашей вложенной программе; конечно, вы можете проверить, существует ли таблица или нет. Если не существует, то 'RAISERROR' с некоторым сообщением об ошибке. Поскольку вы используете SS2005, #temptable будет вариантом, который у вас есть. Комментировать ваш код для удобства чтения никогда не бывает плохой практикой. – Rahul
Существует ли какое-либо соглашение об именах для процедур, которые предназначены для вложенности и не должны вызываться самостоятельно? Я знаю, что должен добавлять комментарии, но я видел много случаев, когда код изменяется, но никто не обновляет комментарий, чтобы его отразить. Разумеется, это то, с чем мы можем справиться с хорошими практиками, но все, что может помочь в удобочитаемости и последовательности, приветствуется. Я думаю, что временные таблицы, вероятно, мой единственный вариант на этом этапе. – bsayegh
говорить об именовании; следуйте любому соглашению, которое лучше подходит для вашей организации (я просто дал имя SP, которое будет отражать цель SP). Если изменения кода происходят, то соответственно изменение комментария является ответственностью разработчика. Кроме этого, все, что вы делаете, выглядит правильно для меня. – Rahul