gpt4 book ai didi

java - 在单个存储过程中创建两个或多个表

转载 作者:行者123 更新时间:2023-11-29 14:16:42 25 4
gpt4 key购买 nike

是否可以在一个存储过程中创建多个表?我正在创建一个创建表的函数,我像参数一样传递表名,但我想一次创建 3 个表,这是我的存储过程:

CREATE OR REPLACE FUNCTION create_tables(t_name varchar(30))
RETURNS VOID AS
$func$
BEGIN

EXECUTE format('
CREATE TABLE IF NOT EXISTS %I (
cond_a02_cabecera_id PRIMARY KEY,
cond_a02_cabecera_nombre_archivo varchar(100),
cond_a02_cabecera_centro varchar(100),
cond_a02_cabecera_longitud int,
cond_a02_cabecera_archivo_activo boolean,
cond_a02_cabecera_fechae date,
cond_a02_cabecera_fechad date
)', t_name);
END
$func$ LANGUAGE plpgsql;

我正在使用 JDBC 创建数据库,我尝试将“创建表”再次放入存储过程中,但它只创建了第一个。

最佳答案

当然,这应该是可能的。

CREATE OR REPLACE FUNCTION public.create_tables(t_name character varying)
RETURNS void
LANGUAGE plpgsql
AS $function$
BEGIN

EXECUTE format('
CREATE TABLE IF NOT EXISTS %I (a int);
CREATE TABLE IF NOT EXISTS %I (a int);
CREATE TABLE IF NOT EXISTS %I (a int);',
t_name || 1, t_name || 2, t_name || 3);
END
$function$;
postgres=# select create_tables('foo');┌───────────────┐│ create_tables │╞═══════════════╡│               │└───────────────┘(1 row)postgres=# \dt        List of relations┌────────┬──────┬───────┬───────┐│ Schema │ Name │ Type  │ Owner │╞════════╪══════╪═══════╪═══════╡│ public │ foo1 │ table │ pavel ││ public │ foo2 │ table │ pavel ││ public │ foo3 │ table │ pavel │└────────┴──────┴───────┴───────┘(3 rows)

关于java - 在单个存储过程中创建两个或多个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45697796/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com