首页
学习
活动
专区
圈层
工具
发布

调用PostgreSQL存储过程,找不到函数名的问题

PostgreSQL的表,函数名称都是严格区分大小写的,所以在使用的时候没有注意大小写问题容易导致找不到函数名的错误,但最近两天我们发现,如果函数参数使用了自定义的数据类型,也会发生这个问题。...StoredProcedure Parameters: Parameter["@jjdm"] = "KF0355"              //DbType=String 实际上,PostgreSQL的函数...updatefundattention 参数类型不是 text,而是自定义的类型 citex ,下面是函数定义: CREATE OR REPLACE FUNCTION updatefundattention...updatefundattention2 均能通过,故此得到结论: 目前自定义的 citext 类型.NET程序无法设置正确的DbType,从而会出现找不到函数的错误!...解决方案: a,建议不要在PostgreSQL函数的参数中使用自定义的类型,如果要想对参数进行大小写转换,建议在函数体中使用另外一个Pgsql变量,函数中执行查询的SQL语句使用这个新变量,而不是直接使用这个函数参数

2.6K50
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    .net访问PostgreSQL数据库发生“找不到函数名”的问题追踪

    尽管PostgreSQL使用比较广泛,但在国内相关资料太少,我们在数据库迁移的过程中,遇到了不少问题,比如我的上一篇文章PostgreSQL的.NET驱动程序Npgsql中参数对象的一个Bug 中关于“找不到函数名...1,问题回顾:  在上一篇文章中说到,有一个PostgreSQL函数 updateattention ,它有一个自定义的函数参数,下面是函数头: CREATE OR REPLACE FUNCTION updateattention...(dm citext)   RETURNS void AS $BODY$ --函数体略 参数dm 的类型是citex,一个自定义的数据类型,使用它来作为函数参数或者变量的类型,在进行数据查询的时候可以不区分大小写...$BODY$ --函数体略 再次运行前面说的.net数据访问程序,运行通过!...故此得到结论: PostgreSQL数据库的函数中使用“自定义数据类型”,在.NET程序可能无法设置正确的DbType,从而出现找不到函数名的错误!

    2.1K70

    c++ template 多层继承下找不到纯虚拟函数实现 报错:undefined reference to xxx

    如下代码中,定义了3个类,ClassA,ClassB,ClassC,依次为被继承关系,ClassA,ClassB是模板类, 在ClassA中定义了一个纯虚拟函数getKeyFromObject,实现将从...V中获取K的功能: getKeyFromObject函数在ClassA,ClassB中都有被调用,在ClassC中被实现。...编译器在遇到纯虚拟函数时,会从父类开始一层层向下寻找,如果在子类中找到该函数,但还是被定义为纯虚函数,则会继续向子类的子类中寻找。如果子类中没有定义该函数,就中断查找过程。...即使子类的子类中有实现该纯虚拟函数,也找不到。 上面的ClassB(也就是第二层)中没有定义这个纯虚拟函数。所以即使ClassC(第三层)中实现了该函数,编译也会报错。...知道原因,就好解决了: 在ClassB中再定义一次该函数,同样申明成纯虚函数,并且在第二层调用的时候,不能指定调用父类的函数 只需要修改ClassB(第二层)代码,修改后的代码是这样: template

    44610
    领券