首页 文章

带有变量的Oracle pl / sql:使用当前日期和主机地址创建序列

提问于
浏览
2

这是一个关于如何使用变量创建序列的简单问题 . 我想用系统时间的组合创建一个序列作为它的起始值 . 我该怎么做

这是我写的:

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;

但它说无效的数量 . 我知道这是一个noobie问题 . 但我真的需要帮助 .

1 回答

  • 3

    你不能在DDL语句中绑定变量(我没有doc或一个很好的理由,但很多参考文献提到了这个事实),你必须连接在一起 .

    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;
    

相关问题