Синтаксис JavaScript 101. Вот объявление функции:
function foo() {}
Обратите внимание, что нет точки с запятой: это просто объявление функции. Вам понадобится вызов foo()
, чтобы фактически запустить функцию.
Теперь, когда мы добавляем кажущуюся безобидную восклицательную знак: !function foo() {}
, она превращает ее в выражение. В настоящее время это выражение функции.
Конечно, !
не вызывает функцию, но мы можем теперь положить ()
в конец: !function foo() {}()
, который имеет более высокий приоритет, чем !
и мгновенно вызывает функцию.
Так что автор делает сохранение байта на выражение функции; более читаемым способом его написания было бы следующее:
(function(){})();
Наконец, !
возвращает выражение true. Это связано с тем, что по умолчанию все возвраты IIFE undefined
, что оставляет нас с !undefined
, который является true
. Не особенно полезно.
Я понял, что у вас могут быть разные DDL. Если это так, я предлагаю вам иметь таблицу для управления версиями. Используя эту таблицу, вы можете иметь уникальный номер версии каждый раз, когда у вас есть новый скрипт DDL / DML. Затем вы можете проверить, существует ли этот номер версии в таблице версий, и если это не так, вы можете выполнить сценарий DDL, после чего вам нужно вставить номер версии в таблицу версий.
BEGIN
DECLARE @version_number VARCHAR(30) DEFAULT 'V10298492';
DECLARE @VERSION_EXISTS INT ;
SELECT COUNT(*)
INTO @VERSION_EXISTS
FROM CMS_VERSION
WHERE VERSION_NUMBER = @version_number;
IF (@VERSION_EXISTS = 0)
RETURN;
END IF;
--DDL SCRIPT AFTER THIS POINT
...
--END OF DDL SCRIPT
INSERT INTO CMS_VERSION (VERSION_NUMBER)
VALUES (@version_number);
END;