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;

在执行SQL任务执行SQL任务(SSIS(中,我无法通过参数(在上述情况下为some_Integer_value(将数字传递给传递参数,因此我不得不使用存储过程来运行最后一条ALTER表语句。

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({?=调用DEV.SET_AUTO_INCREMENTSP(?,?,?(}
[SQL0104]令牌无效。有效令牌:SET DROP RESTART。例程运行失败
-回滚成功完成。

STATEMENT1是50长,这可能还不够,并且在with和数字之间没有任何空格

最新更新