Простая, одна строка кода JavaScript даст вам имя браузера:
function GetBrowser()
{
return navigator ? navigator.userAgent.toLowerCase() : "other";
}
Вот то, что я придумал:
Обертка это в ДОЛЖНОСТНОМ ЛИЦЕ (), как так:
if @version <> @expects
begin
...snip...
end
else
begin
exec('CREATE PROC MyProc AS SELECT ''Victory!''');
end
Работы как очарование!
Но не упустите одинарные кавычки в рамках своей Хранимой процедуры - их нужно "оставить" путем добавления второго. Первый ответ сделал это, но на всякий случай Вы пропустили его. Прерывание для молодых игроков.
Управление версиями Ваша база данных является способом пойти, но... Почему условно создают хранимые процедуры. Для Представлений хранимые процедуры, функции, просто условно отбрасывают их и воссоздают их каждый раз. Если Вы условно создадите, то Вы не будете базы данных очистки, которые имеют проблему или взлом, который стал вставленным 2 года назад другим разработчиком (Вы или я никогда не будем делать этого), кто был уверен, что не забудет удалять одно обновление чрезвычайной ситуации времени.
Проблема с отбрасыванием и созданием - Вы, проигрывают, любая безопасность допускает, что был ранее применен к отбрасываемому объекту.
Я должен признать, я обычно соглашался бы с @Peter - я условно отбрасываю и затем безусловно воссоздаю каждый раз. Я ловился слишком много раз в прошлом при попытке пересмотреть различия в схеме между базами данных, с или без любой формы управления версиями.
Однако Ваше собственное предложение @Josh довольно прохладно. Конечно, интересный.:-)
IF NOT EXISTS(SELECT * FROM sys.procedures WHERE name = 'pr_MyStoredProc')
BEGIN
CREATE PROCEDURE pr_MyStoredProc AS .....
SET NOCOUNT ON
END
ALTER PROC pr_MyStoredProc
AS
SELECT * FROM tb_MyTable
используйте команду 'Exists' в T-SQL, чтобы видеть, существует ли сохраненный proc. Если это делает, использование 'Изменяют', еще используют, 'Создают'