用于以字符串形式返回数字的 oracle 序列

发布于 2025-01-07 17:57:06 字数 505 浏览 0 评论 0原文

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

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”这样的字符串。

我该怎么做?

I have a sequence which returns a number like this

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

And I created a trigger to insert this value into the table 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 ; 

But the sequence is returning integer while the form_id in the form table is string.
I need a string like '9000' etc.

How can I do this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

望她远 2025-01-14 17:57:06
  1. 为什么FORM_ID是一个字符串,为什么不把它变成一个整数?

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. Why is FORM_ID a string, why won't you make it an integer?

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 ; 
戴着白色围巾的女孩 2025-01-14 17:57:06

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

Maybe you should consider to change FORM_ID data type from VARCHAR or STRING to NUMBER.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文