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;

しかし、無効な数値と表示されます。私はそれが初心者の質問であることを知っています。しかし、ここで本当に助けが必要です。

4

1 に答える 1

3

DDLステートメントで変数をバインドすることはできません(ドキュメントや理由はわかりませんが、事実に言及している参考文献がかなりあります)。すべてを1つに連結する必要があります。

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;
于 2012-11-01T09:23:28.947 に答える