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

时间:2012-11-01 09:09:31

标签: oracle plsql

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

这是我写的:

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问题。但我真的需要帮助。

1 个答案:

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