我正在尝试创建用户生成的序列。根据oracle序列的通常语法,我们可以从一个数字开始并递增一个值。 是否有方法在序列中编写plsql块(声明begin end)并生成我自己的sequnce。
示例:ABC001 当我调用序列的下一个val时,该值应为ABC002
答案 0 :(得分: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;
/
如果您只是想插入任何列,并使用它除了一些String之外创建PK,那么
INSERT INTO TABLE_T VALUES('ABC'|| SEQUENCE_NAME.nextval, OTHER_VALUES);
它仍会为您提供以下值:ABC1
,ABC2
,...... ABC12
,ABC13
,.... ABC99
,{ {1}}依旧......
答案 1 :(得分:0)
考虑到示例示例,您已经编写了以下代码
创建序列,然后
insert into seq values('ABC'||YOURSEQUENCENAME.nextval,YOUR_VALUE);