2014-12-11 2 views
0

Я пытаюсь создать последовательность, созданную пользователем. В соответствии с обычным синтаксисом последовательности оракулов мы можем начинать с числа и увеличивать значение. Есть ли способ написать блок plsql (объявить начало конца) внутри последовательности и создать собственный sequnce.Как разместить блок plsql внутри последовательности

пример: ABC001 Когда я вызвать следующий Вэл последовательности, значение должно быть ABC002

ответ

0

Учитывая пример пример вы дали чат писать следующий код

создать последовательность, затем

insert into seq values('ABC'||YOURSEQUENCENAME.nextval,YOUR_VALUE); 
1

ПОЖАЛУЙСТА, ОЧИСТИТЕ ПЕРВОЕ ЧТО ВЫ ТОЧНО ХОТИТЕ СПРОСИТЬ.

Если вы спрашиваете, КАК ДИНАМИЧНО СОЗДАТЬ ПОСЛЕДОВАТЕЛЬНОСТЬ, ИСПОЛЬЗУЯ PL/SQL, тогда проверьте ниже.

Простейший способ.

DECLARE 
    SQL_S VARCHAR2(100); 
BEGIN 
    SQL_S := 'CREATE SEQUENCE SQN_NAME INCREMENT BY 1 START WITH 1'; 
    EXECUTE IMMEDIATE SQL_S; 
END; 
/

Если вы хотите динамически создавать последовательность с некоторой DYNAMIC имя в качестве аргумента передается процедуре, то это будет как

CREATE OR REPLACE PROCEDURE DYNAMIC_SQN (ARG IN VARCHAR2) IS 
    SQL_S VARCHAR2(100); 
    PARAM1 VARCHAR2(20); 
BEGIN 
    PARAM1 := 'SQN_NAME_' || ARG; 
    SQL_S := 'CREATE SEQUENCE ' || PARAM1 || ' INCREMENT BY 1 START WITH 1'; 
    EXECUTE IMMEDIATE SQL_S; 
END; 
/

И если вы просто хотите вставить в любую колонку, и создать рк использовать его в дополнение к некоторой строке, то

INSERT INTO TABLE_T VALUES('ABC'|| SEQUENCE_NAME.nextval, OTHER_VALUES); 

Это будет по-прежнему дают вам значения, как: ABC1, ABC2, .... ABC12 , ABC13, .... ABC99, ABC100 и так далее ...

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