Postgresql 在函数中包含集合选项

Postgresql 在函数中包含集合选项,postgresql,function,Postgresql,Function,我有一个函数,可以创建一些临时表,并连接这些临时表。当我创建函数时,我可以在查询的顶部包括这一行: SET check_function_bodies = false; 这可防止引发错误“关系确实存在”。到目前为止还不错,但是调用函数时是否可以包含相同的SET行,还是应该包含在函数定义本身中 以下是我的实际函数定义: CREATE OR REPLACE FUNCTION reporting."rsp_TermPositionRawData_WIP"( /* parameters */ ) RE

我有一个函数,可以创建一些临时表,并
连接这些临时表。当我创建函数时,我可以在查询的顶部包括这一行:

SET check_function_bodies = false;
这可防止引发错误“关系确实存在”。到目前为止还不错,但是调用函数时是否可以包含相同的
SET
行,还是应该包含在函数定义本身中

以下是我的实际函数定义:

CREATE OR REPLACE FUNCTION reporting."rsp_TermPositionRawData_WIP"( /* parameters */ ) RETURNS void LANGUAGE 'sql'
COST 100 VOLATILE SET check_function_bodies=false
AS $BODY$
BEGIN
    DROP TABLE IF EXISTS FilteredRequests;
    DROP TABLE IF EXISTS FilteredResponses;
    DROP TABLE IF EXISTS Ranks;    

    CREATE TEMP TABLE FilteredRequests AS
       SELECT /* large query */;
    CREATE TEMP TABLE FilteredResponses AS
       SELECT /* large query that references "filteredrequests" */
    CREATE TEMP TABLE Ranks AS
       SELECT /* large query that references "filteredresponses" */
$BODY$;
错误消息是

ERROR: relation "filteredrequests" does not exist LINE 116: INNER JOIN FilteredRequests FRQ ON FRQ.QuoteID

要避免在
创建函数过程中出现错误
,您必须按照所做的方式
设置
参数。无法将其包含在
CREATE FUNCTION
语句中


CREATE FUNCTION
SET
子句控制执行函数时的参数,而不是定义函数时的参数。

您还可以将函数添加到您的问题中吗?我对您的回答有点困惑。你的第一句话是指选择函数吗?对不起,太简洁了。我的第一句话的意思是,您现在所使用的方法(首先运行
SET
语句,然后运行
CREATE函数
语句)是正确的方法。在一份声明中无法做到这一点。谢谢。我对函数加冠词没有问题,但是当我在SELECT语句中调用它,为参数指定值时,我得到了“关系不存在”错误。在执行函数时,所有引用的对象都必须在那里,否则你当然会得到错误。我认为你应该提问并显示你的函数代码以及引用的错误消息。如果你发出
SET check\u function\u bodies=false,你就不会得到错误首先,对吗?这个函数运行得很好,对吗?