[英]Create two or more tables in a single stored procedure
是否可以在單個存儲過程中創建許多表? 我正在創建一個函數來創建表,我像參數一樣傳遞表名,但是我想一次創建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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.