如何将plsql块放在序列中

时间:2014-12-11 06:53:16

标签: plsql

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

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

2 个答案:

答案 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);

它仍会为您提供以下值:ABC1ABC2,...... ABC12ABC13,.... ABC99,{ {1}}依旧......

答案 1 :(得分:0)

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

创建序列,然后

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