Как я могу отличаться между переменными в задачах SQL в рабочем процессе? - PullRequest
1 голос
/ 21 октября 2019

У меня есть задача, которая введет идентификатор запуска, имя таблицы и количество строк в таблицу регистрации. Всего у меня 6 таблиц, и я ожидаю еще 15 таблиц в следующем спринте.

SQL выглядит следующим образом:

INSERT INTO logging_rowcount (RUN_ID, tablename, row_count) values (?, 'hardcoded_name1', ?);
INSERT INTO logging_rowcount (RUN_ID, tablename, row_count) values (?, 'hardcoded_name2', ?);

и т. Д., Всего 6 операторов INSERT INTO. Я сопоставил параметры соответственно, используя переменную «run-id» для каждого второго параметра. Сама задача работает, но я боюсь, что она становится немного неосуществимой, когда у меня есть 21 таблица (и 42 сопоставления параметров).

Хотя этот конкретный случай можно решить с помощью другого цикла, вообще говоря:

Есть ли способ использовать «говорящие» термины для моих переменных? EG

INSERT INTO logging_rowcount (RUN_ID, tablename, row_count) values (@USER:run_id, @USER:tablename, @User:rowCount_table)

1 Ответ

2 голосов
/ 21 октября 2019

Вы можете объявить переменные в задаче скрипта:

DECLARE @RunID INT = ?;

INSERT INTO .... VALUES (@RunID, ?, ...);
INSERT INTO .... VALUES (@RunID, ?, ...);

Теперь вашим первым параметром будет RunID, а все последующие - количество строк.

Вы можете определить переменную SQLв сценарии для всех переменных пакета, если вы хотите, поэтому сопоставление будет легче понять (оно будет в порядке как в сопоставлении, так и в сценарии, поэтому легко сопоставлять).

Вы также можете иметьзапрос как выражение (имея строковую переменную, в которой хранится запрос), а в выражении вы можете использовать имена параметров / переменных, но это будет подвержено SQL-инъекции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...