В более старых версиях входной SQL-код просто разделялся на ;-символ, отправляющий одну часть за раз с использованием ReadedStatement JDBC.
Это было слишком простодушно - что, если ; встречается внутри строковый литерал? -- поэтому новый код попытался передать весь SQL-код на сервер в одном ReadyStatement.
Это сработало для большей части наших существующих SQL- файлы, кроме тех, которые создают хранимые процедуры и выполняют их:
Код: Выделить всё
INSERT INTO #MEOW VALUES('foo', 1);
INSERT INTO #MEOW VALUES('bar', 2);
CREATE PROCEDURE #MEOW_sp
AS
BEGIN
SELECT BAR, FOO INTO #WOOF FROM #MEOW
END;
INSERT INTO #MEOW VALUES('boo', 11);
exec #MEOW_sp;
Итак, нам все еще нужно разделить SQL-объекты, но мне хотелось бы более сложную границу разделения, чем ;. Каким будет шаблон, который разделит приведенный выше SQL-код на три части:
- Одна с двумя INSERT. >
- Один с CREATE PROCEDURE.
- Один с третьим INSERT и exec.
Подробнее здесь: https://stackoverflow.com/questions/790 ... le-batches