Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 壳内函数_Sql_Postgresql_Case - Fatal编程技术网

Sql 壳内函数

Sql 壳内函数,sql,postgresql,case,Sql,Postgresql,Case,这是我的密码: CREATE OR REPLACE FUNCTION getNumberOfPersons(num int) RETURNS numeric LANGUAGE sql AS $$ CASE WHEN (SELECT * FROM getTotalPersons(num)) is not null THEN SELECT getPerson(num)+getTotalPersons(num)*getPerson(num) ELSE SELECT getPerson(num) END

这是我的密码:

CREATE OR REPLACE FUNCTION getNumberOfPersons(num int)
RETURNS numeric LANGUAGE sql AS
$$
CASE WHEN (SELECT * FROM getTotalPersons(num)) is not null THEN SELECT getPerson(num)+getTotalPersons(num)*getPerson(num) ELSE SELECT getPerson(num) END;
$$;

在我用同样的代码使用CASE之前(只有第一个分支),一切都很好,但现在使用CASE时,我得到了一个错误“CASE处或附近的语法错误”。我看不出我的错误在哪里。

语言sql
函数中,不能只有a

但这两者都不需要。简单的合并可以:

CREATE OR REPLACE FUNCTION getNumberOfPersons(num int)
RETURNS numeric LANGUAGE sql AS
$$
  select coalesce(getTotalPersons(num),1) * getPerson(num);
$$;

顺便说一句:标量函数不应该像表函数那样使用

所以,
SELECT*fromtottalpersons(num)
应该是
selectgettotalpersons(num)

我很困惑。您使用
getTotalPersons
作为标量和表引用。这个代码没有意义。