Объявить переменную в DB2 - PullRequest
1 голос
/ 01 ноября 2010

Я абсолютный новичок в DB2.Я пытаюсь помочь кому-то еще, кто является новичком SQL.

То, что я пытаюсь сделать, выглядело бы так в SQL Server:

declare @MaxValue int
select @MaxValue = Max(ID_COLUMN) from MainTable 

insert into MainTable (ID_COLUMN, OTHER_STUFF)
select TEMP_ID + @MaxValue, MORE_OTHER_STUFF
from   TempTable

Как я могу сделать это в DB2?(Бонусные баллы, если вы можете сказать мне способ сделать это так, чтобы вставленные значения в ID_COLUMN просто продолжали считать от текущего максимума.)

Примечание: я вижу много примеров, говорящих о том, что вы можете объявить переменную какэто

DECLARE myvariable int;

но это ошибка для нас.Поэтому, если вы используете этот синтаксис, вы можете прокомментировать, почему это не работает.

Ответы [ 2 ]

2 голосов
/ 07 ноября 2010

Что у вас должно работать.посмотрите Здесь Вы уверены, что не делаете более грубую опечатку?возможно, в стартовом блоке вашего процесса.

звучит так, как будто вы хотите, чтобы столбец идентификаторов для меня был примерно таким.

col3 INT NOT NULL GENERATED ALWAYS AS IDENTITY
                                     (START WITH 100, INCREMENT BY 5)) 

если вы работаете с SQL Server / Sybase, одна из приятных особенностей столбца идентификации DB2 заключается в том, что они не «прыгают», как на вышеупомянутых платформах.

Если вам нужно знать последнее сгенерированное значение идентификатора, то вы делаете что-то вроде

 VALUES IDENTITY_VAL_LOCAL() INTO :MY_LOCAL_VAR_FOR_IDENTITY

, таким образом, вы, вероятно, можете сделать это, выполнив два вышеупомянутых оператора SQL и затем вернувзначения

1 голос
/ 01 ноября 2010

Переменные могут быть объявлены внутри составного блока SQL, что обозначается через BEGIN ATOMIC.

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