我是Oracle的PL / SQL新手,到目前为止我尝试过的东西不起作用


我想得到 max(我的表的id)
然后创建一个以 maxID + 1
DECLARE开头的SEQUENCE maxId NUMBER;

 BEGIN
 SELECT max(id)+1 INTO maxId FROM TABLE;
创建序列“DB”。“SEQ_TABLE”MINVALUE 1 MAXVALUE 999999以1开始递增maxId CACHE 20 NOORDER NOCYCLE;
 END;
 /

&#xA ;
 但是我不能在这里使用 CREATE
...
我怎样才能实现这个目标?

答案 0 :(得分:1)
动态SQL如下:
DECLARE
maxId NUMBER;
v_sql varchar(200);
BEGIN
SELECT max(ID) INTO maxId FROM MyTable;
v_sql := 'CREATE SEQUENCE SEQ_TABLE MINVALUE 1 MAXVALUE 999999 INCREMENT BY 1 START WITH '|| to_char(maxId) ||' CACHE 20 NOORDER NOCYCLE';
execute immediate v_sql;
END;
/
所有编辑......
答案 1 :(得分:1)
你可以试试这个:
DECLARE
maxId NUMBER;
v_sql VARCHAR2 (200);
BEGIN
SELECT MAX (employee_id) + 1
INTO maxId
FROM employee;
v_sql:= 'CREATE SEQUENCE SEQ_TABLE START WITH '|| maxId ||' INCREMENT BY 1 MINVALUE 1 MAXVALUE 999999 NOORDER NOCYCLE';
EXECUTE IMMEDIATE v_sql ;
END;
/
答案 2 :(得分:0)
感谢您的帮助,但我终于找到了自己的方式!
我确实喜欢这样:
DECLARE maxId NUMBER;
BEGIN
SELECT max(id)+1 INTO maxId FROM TABLE;
execute immediate 'CREATE SEQUENCE "DB"."SEQ_TABLE" MINVALUE 1 MAXVALUE 9999999999 INCREMENT BY 1 START WITH '|| maxId ||' CACHE 20 NOORDER NOCYCLE';
END;
/