Postgresql postgres中的返回变量和CTE结果

Postgresql postgres中的返回变量和CTE结果,postgresql,Postgresql,我有一个函数,它应该返回两个整数:研究资产存储和原始资产存储 我将研究资产存储保存为查询中的变量,然后使用CTE找出原始资产存储是什么。但是,我在尝试返回两个整数时出错 下面的查询要返回i\u研究\u资产\u存储和资产\u存储id,正确的语法是什么 BEGIN i_study_asset_store = (SELECT stud.asset_store_id FROM study.studies as stud WHERE studyid = _study_id::INT); WITH s

我有一个函数,它应该返回两个整数:研究资产存储和原始资产存储

我将研究资产存储保存为查询中的变量,然后使用CTE找出原始资产存储是什么。但是,我在尝试返回两个整数时出错

下面的查询要返回
i\u研究\u资产\u存储
资产\u存储
id,正确的语法是什么

BEGIN

i_study_asset_store  = (SELECT stud.asset_store_id FROM study.studies as stud WHERE studyid = _study_id::INT);

WITH study_store AS(
    SELECT origin_asset_id
    FROM asset.assets
    WHERE asset_store_id = 23 --study_asset_store
    LIMIT 1
),
origin_asset_store AS(
    SELECT asset_store_id
    FROM asset.assets
    WHERE asset_id IN (SELECT origin_asset_id FROM study_store)

)
RETURN QUERY
    SELECT
        i_study_asset_store AS study_asset_store
        ,(SELECT asset_store_id FROM origin_asset_store) AS origin_asset_store;

END;

你的语法错了。应该是

RETURN QUERY
   WITH cte1 AS (/* ... */),
        cte2 AS (/* ... */)
   SELECT ...;