2010-11-01 5 views
0

Я новичок в DB2. Я пытаюсь помочь кому-то другому, кто является новичком SQL.Объявить переменную в DB2

То, что я пытаюсь сделать будет выглядеть в 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

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

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

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

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

Смежные вопросы