【问题标题】:Return result of CASE with Posgres SQL function使用 Postgresql 函数返回 CASE 的结果
【发布时间】:2020-10-18 14:40:54
【问题描述】:

我正在尝试编写一个简单的 SQL 函数,该函数将用作 Hasura.io 平台中的计算字段。

CREATE OR REPLACE FUNCTION calling_mode(calling_row calling, hasura_session json)
RETURNS text AS $$
  SELECT CASE
    WHEN calling_row.seekerUserId = hasura_session ->> 'x-hasura-user-id' THEN 'seeker'
    WHEN calling_row.partnerUserId = hasura_session ->> 'x-hasura-user-id' THEN 'partner'
    ELSE 'none'
  END
$$ LANGUAGE sql STABLE;

这给了我一个错误missing FROM-clause entry for table "calling_row"

我尝试浏览了几个文档,但对我来说没有任何意义。

【问题讨论】:

    标签: sql postgresql hasura


    【解决方案1】:

    可能会导致大写字母,所以如果你的原始列名是seekerUserId,那么在你的函数中postgres将它转换为seekeruserid,并且找不到该列。

    尝试将列名放入双引号中,如:

    CREATE OR REPLACE FUNCTION calling_mode(calling_row calling, hasura_session json)
    RETURNS text AS $$
      SELECT CASE
        WHEN calling_row."seekerUserId" = hasura_session ->> 'x-hasura-user-id' THEN 'seeker'
        WHEN calling_row."partnerUserId" = hasura_session ->> 'x-hasura-user-id' THEN 'partner'
        ELSE 'none'
      END
    $$ LANGUAGE sql STABLE;
    

    【讨论】:

      猜你喜欢
      • 2010-10-19
      • 1970-01-01
      • 2016-06-10
      • 2016-01-12
      • 1970-01-01
      • 1970-01-01
      • 2019-05-31
      • 1970-01-01
      • 2019-02-22
      相关资源
      最近更新 更多