C# ';输入结束时出现语法错误';-尝试从数据库启动存储过程时

C# ';输入结束时出现语法错误';-尝试从数据库启动存储过程时,c#,postgresql,asp.net-core,C#,Postgresql,Asp.net Core,我正在用.NETCore编写,并试图从数据库启动存储过程(Postgresql) 我得到一个错误,说有一个“语法错误在输入端”。 连接字符串正确(在调试期间发现)。问题在于.FromSql()方法语法 代码如下: List<ActivePackageForOpenBillingPeriod> activeUserPackagesForOpenBillingPeriod =null; using(var conn = new NpgsqlConnection("Hos

我正在用.NETCore编写,并试图从数据库启动存储过程(Postgresql)

我得到一个错误,说有一个“语法错误在输入端”。 连接字符串正确(在调试期间发现)。问题在于.FromSql()方法语法

代码如下:

List<ActivePackageForOpenBillingPeriod> activeUserPackagesForOpenBillingPeriod =null;

        using(var conn = new NpgsqlConnection("Host=localhost;Port=xxx;Database=postgres;Username=xxx;Password=xxx;TrustServerCertificate=xxx;ApplicationName=xxx;"))
        {

            var s = "create function \"GetActiveUserPackagesForOpenBillingPeriod({0})\"";
            activeUserPackagesForOpenBillingPeriod = context.ActivePackageForOpenBillingPeriods.FromSql(s,DateTime.Now).ToList();
        }

看起来你错过了一个回报;在你的功能结束时。它应该在末端上方的线路上

您正在运行的查询是错误的。它是函数创建语句和获取其结果的调用之间的混合

此外,只有函数名应该双引号,而不是参数

将查询更改为

var s = "SELECT * FROM \"GetActiveUserPackagesForOpenBillingPeriod\"({0})";

成功了。我现在有一个不同的错误-PostgresException:42883:函数GetActiveUserPackagesForOpenBillingPeriod(没有时区的时间戳)不存在。这可能是参数问题,对吗?@GugaTodua找不到函数可能有多种原因。它是创建的吗?调用它的用户是否具有
execute
权限等。参数似乎很好(在错误消息和函数定义中是相同的类型)。我已经创建了一个函数,并且我确实具有execute权限。最有可能的问题是我传递的参数(DateTime.Now-即“06/06/2019 15:06:55”)。
var s = "SELECT * FROM \"GetActiveUserPackagesForOpenBillingPeriod\"({0})";