我是ColdFusion的新手,我在CFQuery中编写了一块Postgres代码:

<cffunction name="insertToReport" access="private" returntype="struct" output="false" >

  <cfset var xyz = structNew() >
  <cfset xyz.code = "">
      <cfquery name="querysampleresult" datasource="abc">
            DO
            $BODY$
                DECLARE resultValue int;
            BEGIN
               resultValue = 1;
               SELECT resultValue INTO resultValue ;
            END;
            $BODY$
      </cfquery>

            <cfset xyz.code = querysampleresult.resultValue  >

           <cfreturn xyz >
</cffunction>

我的问题是我无法访问CFQuery标记之外的变量resultValue,即它引发了异常:
Element RESULTVALUE is undefined in querysampleresult

这是在函数末尾的CFSet语句中发生的:
<cfset xyz.code = querysampleresult.resultValue  >

我不知道如何在结构中设置变量resultValue,我势必将结构从此处返回到调用环境。
在此,请帮助我,在此先感谢。

最佳答案

匿名代码块(DO)始终返回void。您需要使用一个函数来返回其他任何内容:

create function f()
returns integer as $body$
declare
    resultValue integer;
begin
    resultValue := 1;
    return resultValue;
end;
$body$
language plpgsql

创建函数后,可以在查询中使用它:
select f() as resultValue;

10-04 10:42