Я использую пакеты SSIS для обновления своих таблиц разработки производственными данными, используя «Выполнить задачу SQL» для выполнения этих запросов:
alter table DEV.tablename alter column ID drop identity;
delete from DEV.tablename;
insert into DEV.tablename SELECT * FROM RESTORE.COVERAGE;
alter table DEV.tablename alter column ID set generated always as identity;
alter table DEV.tablename alter column ID restart with some_Integer_value;
Мне не удалось передать число через параметры (some_Integer_value в приведенном выше случае) в параметр передачи в задаче выполнения SQL Выполнить задачу SQL (SSIS), поэтому мне пришлось использовать хранимую процедуру для выполнения последнего оператора ALTER table.
CREATE PROCEDURE set_auto_incrementSP (IN TABLENAM VARCHAR(50),IN TABLECOLUM VARCHAR(30),IN INC_NUM INT)
RESULT SETS 1
LANGUAGE SQL
P1: BEGIN
DECLARE STATEMENT1 VARCHAR(50);
DECLARE NAME VARCHAR(30);
DECLARE TABLENAME VARCHAR(50);
DECLARE TABLECOLUMN VARCHAR(30);
DECLARE INC_NUMBER INTEGER DEFAULT 0;
SET TABLENAME=TABLENAM;
SET TABLECOLUMN=TABLECOLUM;
SET INC_NUMBER=INC_NUM;
-- Declare cursor
SET STATEMENT1 = 'ALTER TABLE '||TABLENAME||' alter column '||TABLECOLUMN||' restart with'||INC_NUMBER||' ';
PREPARE NAME FROM STATEMENT1;
EXECUTE IMMEDIATE STATEMENT1;
Хранимая процедура успешно развернута, но при выполнении хранимой процедуры я вижу эту ошибку:
Запустите: DEV.SET_AUTO_INCREMENTSP (VARCHAR (50), VARCHAR (30), INTEGER) {? = call DEV.SET_AUTO_INCREMENTSP (?,?,?)}
[SQL0104] Недействительный токен. Допустимые токены: SET DROP RESTART. Не удалось выполнить процедуру.
- Откат успешно завершен.