PostgreSQL - 如何执行“独立式”代码?

发布于 2024-10-30 17:47:13 字数 778 浏览 1 评论 0原文

我习惯了 SQL Server 中的查询编辑器,可以在其中自由编写和查询。执行 T-SQL。如何让以下代码在 PostgreSQL 中执行,而无需从中创建函数?

DECLARE 
    l integer = 1;
BEGIN
    CREATE TABLE product_i (id bigint, key integer, value integer);
    CREATE INDEX ix_product_i_size ON product_i(value) WHERE key = 1;
    CREATE INDEX ix_product_i_mass ON product_i(value) WHERE key = 2;

    LOOP
        BEGIN;
        INSERT
        INTO    product_i (id, key, value)
        SELECT  id, 1, CEILING(10 + RANDOM() * 90)
        FROM    generate_series(l, 1000) id;

        INSERT
        INTO    product_i (id, key, value)
        SELECT  id, 2, CEILING(10 + RANDOM() * 90)
        FROM    generate_series(l, 1000) id;

        COMMIT;
        l := l + 1000;
        EXIT WHEN l > 5000;
    END LOOP;
END

I am used to the Query Editor in SQL Server where one can freely write & execute T-SQL. How do I get the following code to execute in PostgreSQL without having to create a function out of it?

DECLARE 
    l integer = 1;
BEGIN
    CREATE TABLE product_i (id bigint, key integer, value integer);
    CREATE INDEX ix_product_i_size ON product_i(value) WHERE key = 1;
    CREATE INDEX ix_product_i_mass ON product_i(value) WHERE key = 2;

    LOOP
        BEGIN;
        INSERT
        INTO    product_i (id, key, value)
        SELECT  id, 1, CEILING(10 + RANDOM() * 90)
        FROM    generate_series(l, 1000) id;

        INSERT
        INTO    product_i (id, key, value)
        SELECT  id, 2, CEILING(10 + RANDOM() * 90)
        FROM    generate_series(l, 1000) id;

        COMMIT;
        l := l + 1000;
        EXIT WHEN l > 5000;
    END LOOP;
END

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

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

发布评论

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

评论(1

百善笑为先 2024-11-06 17:47:13

如果您至少使用 PostgreSQL 9.0,则可以将其包含在 DO 块中:

http://www.postgresql.org/docs/9.0/static/sql-do.html

If you are using at least PostgreSQL 9.0, you can include this in a DO block:

http://www.postgresql.org/docs/9.0/static/sql-do.html

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