我创建了func_leonard_test2函数,当
返回 teach_fra = true 时SELECT func_leonard_test2('Français-Philosophie');
func_leonard_test2
CREATE OR REPLACE FUNCTION public.func_leonard_test2(
IN url text,
OUT translation text)
RETURNS text AS
$BODY$BEGIN
SELECT CONCAT(translate,'=true') INTO translation FROM seo_content WHERE name=url;
END;$BODY$
我想在下面的
中的where子句中添加该函数SELECT description FROM c_users WHERE (SELECT func_leonard_test('Français-Philosophie')) LIMIT 10;
但是我得到了错误 错误:WHERE的参数必须是boolean类型,而不是类型文本
如何使该功能在WHERE子句中起作用?
感谢您的时间。
答案 0 :(得分:0)
您的函数返回一个字符串。你需要某种字符串比较。有些像:
WHERE func_leonard_test('Français-Philosophie') IS NOT NULL
或
WHERE func_leonard_test('Français-Philosophie') = 'ABC'
此外,SELECT
不是必需的。
编辑:
我认为你希望函数返回一个布尔值。写它的一种方法是:
CREATE OR REPLACE FUNCTION public.func_leonard_test2 (
IN in_url text
)
RETURNS boolean AS
$BODY$BEGIN
RETURN (SELECT (c.translate = true)
FROM seo_content c
WHERE c.name = in_url
);
END;$BODY$
然后你可以使用:
WHERE func_leonard_test('Français-Philosophie')