Return 使用 Postgres SQL 函数的 CASE 结果

Return result of CASE with Posgres SQL function

我正在尝试编写一个简单的 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"

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

可能这会导致大写字母,因此如果您的原始列名称是 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;