用于将数字作为字符串返回的oracle序列

时间:2012-02-22 08:02:54

标签: oracle sequence

我有一个返回像这样的数字的序列

CREATE SEQUENCE test.SEC_FORM 
START WITH 9000
MAXVALUE 999999999999999999999999999
MINVALUE 1
NOCYCLE
CACHE 20
NOORDER;

我创建了一个触发器,将此值插入表格FORM。

CREATE OR REPLACE TRIGGER test.TRG_SEC_FORM
BEFORE INSERT
ON test.FORM
FOR EACH ROW
BEGIN
  IF :NEW.FORM_ID IS NULL THEN
      SELECT test.SEC_FORM.NEXTVAL INTO :NEW.FORM_ID FROM DUAL;
   END IF;
END ; 

但序列返回整数,而表格表格中的form_id是字符串。 我需要一个像'9000'等字符串。

我该怎么做?

2 个答案:

答案 0 :(得分:2)

  1. 为什么FORM_ID是一个字符串,为什么不把它变成一个整数?
  2. 2

    CREATE OR REPLACE TRIGGER test.TRG_SEC_FORM
    BEFORE INSERT
    ON test.FORM
    FOR EACH ROW
    BEGIN
      IF :NEW.FORM_ID IS NULL THEN
          SELECT TO_CHAR(test.SEC_FORM.NEXTVAL) INTO :NEW.FORM_ID FROM DUAL;
       END IF;
    END ; 
    

答案 1 :(得分:0)

也许您应该考虑将FORM_ID数据类型从VARCHAR或STRING更改为NUMBER。