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