在查询中带参数的postgresql

时间:2017-08-15 18:48:49

标签: java postgresql jdbc

最近我在postgresql中创建了一个存储过程,用java中的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 (tname_test varchar(100));
   CREATE TABLE IF NOT EXISTS %I (tname_nos int);
   CREATE TABLE IF NOT EXISTS %I (tname_pro int);',
   t_name || 'cabecera', t_name || 'contenido', t_name || 'procesado');
END
$function$;

类似的东西,即时创建大量具有相同属性的表格,所以我想用表格名称来区分我的名字atributtes。

感谢

1 个答案:

答案 0 :(得分:0)

如果我能正确得到你需要的东西,你可以使用quote_ident

这是一个代码示例:

DO $$
DECLARE table_name text:= 'demo';
DECLARE column_name text:= 'column_';
BEGIN
    EXECUTE 'CREATE TEMP TABLE ' || quote_ident(table_name || '_test')||' (' ||quote_ident(column_name||'a')|| ' integer,' ||quote_ident(column_name||'b')|| ' integer)';
END $$;
SELECT * FROM demo_test;