使用声明的序列填充 Pl/SQL 中的表

发布于 2024-12-24 18:47:21 字数 380 浏览 2 评论 0原文

我需要使用序列在数据库中填充大量新创建的表,其中至少包含 30 行。请发布语法。

我应该使用循环吗?

欢迎任何建议和解决方案。

非常感谢您为解决此问题提供的帮助。

我创建了三个序列并将值添加到 3 列 30 行。对于idtel_noemp_id是否可以创建3个序列并添加30行。如果一列是像name这样的varchar2怎么办?目前,3 个序列正在填充 3 列中的值,但在“名称列”中添加 null。请帮助了解如何添加 30 个名称并解决此问题。非常抱歉,我是新手,请随时澄清。非常感谢您抽出时间。

总结一下:我只想序列生成所有行的数字序列并提示我输入名称。

I need to populate lot of newly created tables with minimum 30 rows in my database using sequences. Please post the syntax.

Shall I use loop?

Any suggestions and solutions welcome.

Your help is much appreciated in resolving this issue.

I've created three sequences and added values to 3 columns with 30 rows. For id, tel_no and emp_id is it ok to create 3 sequences and add 30 rows. What if one column is varchar2 like name. At the moment 3 sequences are populating values in 3 columns but adding null in 'name column'. Please help on how to add 30 names and resolve this. I am very sorry I am new to this, please do not hesitate to clarify. many thanks for your time.

To summarize: I just want sequence to generate sequence for numbers for all the rows and prompt me for the names.

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

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

发布评论

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

评论(2

夏见 2024-12-31 18:47:21

我猜测你想要什么,但是怎么样:

create table test
(id number);

create sequence seq_test
start with 1
maxvalue 999999999999999999999999999
minvalue 1
nocycle
nocache
noorder;

insert into test(id)
select seq_test.nextval from dual
connect by level <= 30;

commit;

I'm guessing a bit at what you want, but how about:

create table test
(id number);

create sequence seq_test
start with 1
maxvalue 999999999999999999999999999
minvalue 1
nocycle
nocache
noorder;

insert into test(id)
select seq_test.nextval from dual
connect by level <= 30;

commit;
蓦然回首 2024-12-31 18:47:21

您还没有提到要在哪里运行脚本 - 如果它在 SQL*Plus 中,那么您可以使用替换变量

BEGIN
    FOR i IN 1..COUNT LOOP
        INSERT INTO emp
                    (id,
                     tel_no,
                     emp_id,
                     NAME)
        VALUES      (id_seq.next_val,
                     tel_no_seq.nextval,
                     emp_id_seq.nextval,
                     &name);
    END LOOP;
END; 

You haven't mentioned where you're going to run the scripts - if it's in SQL*Plus then you can make use of substitution variables

BEGIN
    FOR i IN 1..COUNT LOOP
        INSERT INTO emp
                    (id,
                     tel_no,
                     emp_id,
                     NAME)
        VALUES      (id_seq.next_val,
                     tel_no_seq.nextval,
                     emp_id_seq.nextval,
                     &name);
    END LOOP;
END; 
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文