1
        CREATE OR REPLACE FUNCTION chkfunction(schemaname text, state text, wallmaterial text, roofmaterial text)
            RETURNS text AS
            $BODY$   
            DECLARE 
            tblinclusion text;

        BEGIN


            execute'if (SELECT exists( select schema_name FROM information_schema.schemata WHERE schema_name = '||$1 ||') )
            then
            tblinclusion:="yes";
            return tblinclusion;
            else
            tblinclusion:="no";
            return tblinclusion;'
            Using schemaname;
        END;
        $BODY$
        LANGUAGE plpgsql

但它抛出错误:

syntax error at or near "if"
LINE 1: if (SELECT exists( select schema_name FROM information_schem...
4

1 回答 1

0

首先,由于您似乎是 Stackoverflow 的新手,这里有一些礼仪和发布提示:

  • 始终包含相关的版本信息。在这里,您可能想要包含 PostgreSQL 的版本信息
  • 简明扼要地描述你想做什么
  • 包括任何相关的源代码(你做了......干得好)
  • 包括任何错误(你做了......再次,干得好)
  • 解释你想要的结果
  • 跟进并标记答案。对很多人来说,如果你不把正确答案归功于自己,他们就不会帮助你。只是一个提示。

由于您没有完成上述所有操作,我只能猜测,所以我根据您的代码做出一些假设。如果架构存在,您似乎想要返回文本“是”,如果架构不存在,则返回“否”。如果这不是您的愿望,请更新问题。如果正确,以下内容似乎对您有用:

CREATE OR REPLACE FUNCTION chkfunction2(schemaname text)
RETURNS text AS
$BODY$   
DECLARE 
BEGIN

    PERFORM schema_name FROM information_schema.schemata WHERE schema_name = $1; 

    IF FOUND THEN
        RETURN 'yes';
    ELSE
        RETURN 'no';
    END IF;

END;
$BODY$
LANGUAGE plpgsql

注意:我认为不需要额外的变量或声明,因此我将它们排除在外。另外,请注意我的解决方案是使用 PostgreSQL 9.1 开发和测试的

欢迎来到 StackOverflow!

于 2013-06-05T18:15:49.670 回答