Как я условно создаю хранимую процедуру в SQL Server?

Простая, одна строка кода JavaScript даст вам имя браузера:

function GetBrowser()
{
    return  navigator ? navigator.userAgent.toLowerCase() : "other";
}
21
задан Lankymart 16 December 2015 в 16:08
поделиться

7 ответов

Вот то, что я придумал:

Обертка это в ДОЛЖНОСТНОМ ЛИЦЕ (), как так:

if @version <> @expects
    begin
        ...snip...
    end
else
    begin
        exec('CREATE PROC MyProc AS SELECT ''Victory!''');
    end

Работы как очарование!

22
ответ дан 29 November 2019 в 20:29
поделиться

Но не упустите одинарные кавычки в рамках своей Хранимой процедуры - их нужно "оставить" путем добавления второго. Первый ответ сделал это, но на всякий случай Вы пропустили его. Прерывание для молодых игроков.

5
ответ дан 29 November 2019 в 20:29
поделиться

Управление версиями Ваша база данных является способом пойти, но... Почему условно создают хранимые процедуры. Для Представлений хранимые процедуры, функции, просто условно отбрасывают их и воссоздают их каждый раз. Если Вы условно создадите, то Вы не будете базы данных очистки, которые имеют проблему или взлом, который стал вставленным 2 года назад другим разработчиком (Вы или я никогда не будем делать этого), кто был уверен, что не забудет удалять одно обновление чрезвычайной ситуации времени.

3
ответ дан 29 November 2019 в 20:29
поделиться

Проблема с отбрасыванием и созданием - Вы, проигрывают, любая безопасность допускает, что был ранее применен к отбрасываемому объекту.

2
ответ дан 29 November 2019 в 20:29
поделиться

Я должен признать, я обычно соглашался бы с @Peter - я условно отбрасываю и затем безусловно воссоздаю каждый раз. Я ловился слишком много раз в прошлом при попытке пересмотреть различия в схеме между базами данных, с или без любой формы управления версиями.

Однако Ваше собственное предложение @Josh довольно прохладно. Конечно, интересный.:-)

1
ответ дан 29 November 2019 в 20:29
поделиться
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
0
ответ дан 29 November 2019 в 20:29
поделиться

используйте команду 'Exists' в T-SQL, чтобы видеть, существует ли сохраненный proc. Если это делает, использование 'Изменяют', еще используют, 'Создают'

0
ответ дан 29 November 2019 в 20:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: