如何在序列中放置一个plsql块

我正在尝试创建用户生成的序列 . 根据oracle序列的通常语法,我们可以从一个数字开始并增加一个值 . 有没有一种方法可以在一个序列中编写一个plsql块(声明begin end)并生成我自己的sequnce .

例如:ABC001当我调用序列的下一个val时,该值应为ABC002

回答(2)

2 years ago

请首先清楚您要问的问题 .

如果您正在询问如何使用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;
/

如果你只想插入任何列,并使用它除了一些String之外创建PK,那么

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

它仍将为您提供如下值: ABC1ABC2 ,.... ABC12ABC13 ,.... ABC99ABC100 等等......

2 years ago

考虑到示例示例,您已经编写了以下代码

然后创建你的序列

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