如何解决无法在psql的函数/过程中创建架构
大家好,我在为学校开发管理应用程序,遇到了这个问题:
create or replace procedure create_school_schema(title text)
as
$BODY$
create schema title;
$BODY$
language sql
它不将参数值用作模式名称,而是将“ title”作为模式名称? 有了功能,它也能正常工作,但作为回报,它向我显示了我正在传递的参数值。
解决方法
使用EXECUTE
的示例函数:
CREATE OR REPLACE PROCEDURE public.create_school_schema(title text)
LANGUAGE plpgsql
AS $procedure$
BEGIN
EXECUTE format('CREATE SCHEMA %I',title);
END;
$procedure$
;
要使用EXECUTE
,您将需要使用plpgsql语言。然后,使用format函数将title
变量作为标识符添加到CREATE SCHEMA
语句中。所以:
\dn
List of schemas
Name | Owner
--------+----------
public | postgres
test | postgres
call create_school_schema('school');
CALL
\dn
List of schemas
Name | Owner
--------+----------
public | postgres
school | postgres
test | postgres
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。