这是一个关于如何使用变量创建序列的简单问题。 我想用系统时间的组合创建一个序列作为它的起始值。我该怎么做
这是我写的:
DECLARE
SQS number :=(sysdate - to_date('01-JAN-1970','DD-MON-YYYY')) * (864000);
sql_stmt varchar2(200);
BEGIN
sql_stmt := 'create SEQUENCE XXXX_id_seq MINVALUE 100000 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH :1 CACHE 500 NOORDER CYCLE';
EXECUTE IMMEDIATE sql_stmt using SQS;
END;
但它表示无效的num。 我知道这是一个noobie问题。但我真的需要帮助。
答案 0 :(得分:3)
你不能在DDL语句中绑定变量(我没有文档或一个很好的理由,但很多参考文献提到了这个事实),你必须连接在一起。
DECLARE
SQS number :=(sysdate - to_date('01-JANV.-1970','DD-MON-YYYY')) * (864000);
sql_stmt varchar2(200);
BEGIN
sql_stmt := 'create SEQUENCE XXXX_id_seq MINVALUE 100000 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH '||SQS||' CACHE 500 NOORDER CYCLE';
EXECUTE IMMEDIATE sql_stmt ;
END;