我正在用C语言编写嵌入式SQL应用程序。 应用程序从函数接收一个字符串,我需要创建一个名称取自该字符串的表。 我必须创建几个具有不同名称的表,但我从一开始就不知道表的数量和名称。
这就是我想要做的事情:
tablename = function();
...
EXEC SQL CREATE TABLE :tablename ( ... );
但我收到了这个错误:
ERROR: syntax error at or near ":tablename"
答案 0 :(得分:2)
如果必须创建相同的数据结构但具有唯一名称,则创建创建此类表的过程:
CREATE OR REPLACE FUNCTION create_temp_table(table_name varchar)
RETURNS void AS
$BODY$
BEGIN
EXECUTE 'CREATE TABLE ' || quote_ident(table_name) || ' (id SERIAL, kn VARCHAR, kv VARCHAR)';
END;
$BODY$
LANGUAGE plpgsql;
您可以通过以下方式从SQL调用它:
SELECT create_temp_table('tmp_table_31');
(注意使用quote_ident()
来阻止SQL注入)