Хранимая процедура DB2 для (ALTER) ПЕРЕЗАПУСК столбца с номером

Я использую пакеты 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. Не удалось выполнить процедуру.
- Откат успешно завершен.


person sri    schedule 20.11.2019    source источник


Ответы (1)


STATEMENT1 - это длина 50, этого, вероятно, недостаточно, и вы не ставите пробел между with и числом.

person nfgl    schedule 20.11.2019