在postgres中返回变量和CTE结果

时间:2019-10-21 15:57:36

标签: postgresql

我有一个应返回两个整数的函数:学习资产存储和原始资产存储。

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

下面的查询用来收回i_study_asset_storeasset_store_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;

1 个答案:

答案 0 :(得分:0)

语法错误。应该是

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