我具有以下存储功能
CREATE OR REPLACE FUNCTION public.servers_GetTop()
RETURNS SETOF servers AS
$$
BEGIN
return query
SELECT *
FROM servers
ORDER BY GroupId DESC
LIMIT 5;
END;
$$
LANGUAGE 'plpgsql';
以及以下使用dapper的C#
public async Task<IEnumerable<Models.ServerInfo>> GetTopServers()
{
using (var db = _connectionFactory.GetConnection())
{
var cmd = new CommandDefinition("servers_GetTop", CommandType.StoredProcedure);
return await db.QueryAsync<Models.ServerInfo>(cmd);
}
}
哪个会导致错误:
发生一个或多个错误。 (42601:“ servers_GetTop”处或附近的语法错误)
我正在使用Npgsql4。有人可以帮助我了解语法错误在哪里以及为什么会发生这种情况吗?
如果我在SQL Shell中运行存储的函数,它将正常工作。另外,如果我将代码从使用存储的函数更改为查询,也没有任何问题:
var cmd = new CommandDefinition("SELECT * FROM servers");