没有函数与给定名称和参数类型匹配

2024-01-16

我的职能是:

 CREATE OR REPLACE FUNCTION FnUpdateSalegtab09
(
 iacyrid Integer,iRepId Integer,iDrId Integer,ivrid Integer,imode smallint,itrno 
varchar,itrdate timestamp,iacid Integer,ivrno varchar,iSuppId Integer,icustname 
varchar,inetamt money,idisrate real,idisamt money,iRoundOff real,ijrmid integer,iuserid 
integer,iuserdtm timestamp,iVSNo integer,iRecdAmt money,icstrate real,icstsaleamt 
money,icstamt money,itdrate real,itdamt money,icdrate real,icdamt money,iCessRate 
real,iCessAmt money,iodesc1 varchar,ioamt1 money,iCashCredit boolean,iOrderNo 
varchar,iOrderDate timestamp,iCustAdd2 varchar,iRemarks varchar,iWhoRetSl boolean,iPatName 
varchar,iDrName varchar,iFormId integer,iSalesMan varchar,iCFMode smallint,iPatId 
integer,iStkPtId integer,iDisType smallint,iBranchID integer
)
RETURNS void AS
'BEGIN 
INSERT INTO gtab09 
(
acyrid, RepId, DrId, vrid, mode, trno, trdate, acid, vrno, SuppId, custname, netamt,
disrate, disamt, RoundOff, jrmid, userid, userdtm, VSNo, RecdAmt, cstrate, cstsaleamt,
cstamt, tdrate, tdamt, cdrate, cdamt, CessRate, CessAmt, odesc1, oamt1, CashCredit, 
OrderNo, OrderDate, CustAdd2, Remarks, WhoRetSl, PatName, DrName, FormId, SalesMan, 
CFMode,PatId,StkPtId,DisType,BranchID
)
values 
(   iacyrid,iRepId,iDrId,ivrid,imode,itrno,itrdate,iacid,ivrno,iSuppId,icustname,inetamt,idisra
te,idisamt,iRoundOff,ijrmid,iuserid,iuserdtm,iVSNo,iRecdAmt,icstrate,icstsaleamt,icstamt,it
drate,itdamt,icdrate,icdamt,iCessRate,iCessAmt,iodesc1,ioamt1,iCashCredit,iOrderNo,iOrderDa
te,iCustAdd2,iRemarks,iWhoRetSl,iPatName,iDrName,iFormId,iSalesMan,iCFMode,iPatId,iStkPtId,
iDisType,iBranchID);
END;'
LANGUAGE plpgsql VOLATILE
COST 100;

我曾经这样称呼它:

select FnUpdateSalegtab09 (4, 1, 0, 12, 1, '9'::varchar,'2014-07-15'::timestamp, 4048, '9'::varchar, 4048, 'MYCUSTOMER'::varchar, 12::money, 0, 0::money, 0.32, 185, 0, '2014-07-15 11:24:12 AM'::timestamp, 0, 0::money, 0, 0::money, 0::money, 0, 0::money, 0, 0::money, 0, 0::money, ''::varchar, 0::money, False, ''::varchar, '2014-07-15'::timestamp, ''::varchar, ''::varchar, False, ''::varchar, ''::varchar, 1, ''::varchar, 1,0,1,0,42)

错误是:

ERROR:  function fnupdatesalegtab09(integer, integer, integer, integer, integer, unknown, unknown, integer, unknown, integer, unknown, integer, integer, integer, numeric, integer, integer, unknown, integer, integer, integer, integer, integer, integer, integer, integer, integer, integer, integer, unknown, integer, boolean, unknown, unknown, unknown, unknown, boolean, unknown, unknown, integer, unknown, integer, integer, integer, integer, integer) does not exist  
LINE 1: select FnUpdateSalegtab09 (4, 1, 0, 12, 1, '9','2014-07-15',...
               ^
HINT:  No function matches the given name and argument types. You might need to add explicit type casts.  
********** Error **********

你的函数有几个smallint参数。
但在调用中,您使用的数字文字被假定为类型integer.

字符串文字或字符串常量 https://www.postgresql.org/docs/current/sql-syntax-lexical.html#SQL-SYNTAX-CONSTANTS ('123') 不会立即输入。在显式分配或强制转换之前,它保持类型“未知”。

然而,数字文字或数值常量 https://www.postgresql.org/docs/current/sql-syntax-lexical.html#SQL-SYNTAX-CONSTANTS-NUMERIC立即输入。手册: https://www.postgresql.org/docs/current/sql-syntax-lexical.html#SQL-SYNTAX-CONSTANTS-NUMERIC

既不包含小数点也不包含小数点的数值常量 指数是最初推测为类型integer如果它的值 适合类型integer(32 位);否则它被认为是类型bigint如果它的值符合类型bigint(64 位);否则就是 被视为类型numeric。包含小数点和/或的常量 指数最初总是被假定为类型numeric.

另请参阅:

  • PostgreSQL 错误:函数 to_tsvector(字符变化,未知)不存在 https://stackoverflow.com/questions/14523624/postgresql-error-function-to-tsvectorcharacter-varying-unknown-does-not-exis/14524599#14524599

Solution

添加显式强制转换smallint参数或传递带引号的(无类型)文字。

Demo

CREATE OR REPLACE FUNCTION f_typetest(smallint)
  RETURNS bool AS 'SELECT TRUE' LANGUAGE sql;

错误的调用:

SELECT * FROM f_typetest(1);

正确调用:

SELECT * FROM f_typetest('1');
SELECT * FROM f_typetest(smallint '1');
SELECT * FROM f_typetest(1::int2);
SELECT * FROM f_typetest('1'::int2);

db<>fiddle
Old sqlfiddle. http://sqlfiddle.com/#!17/862dc/1

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

没有函数与给定名称和参数类型匹配 的相关文章

随机推荐

  • Ruby 实例变量访问

    只是好奇假设设置了 attr accessor 从类中访问实例变量的最佳实践是什么 class Test attr accessor user def initializer user user user end def foo user
  • 如何在 hubpipleline 之外使用 SignalR hub 实例

    我正在使用 SignalR 向所有客户广播消息 我需要在集线器类之外触发广播 如下所示 var broadcast new chatHub broadcast Send Admin stop the chat 我收到的错误消息为 不支持使用
  • R 中的 chaid 回归树到表的转换

    我使用了 CHAID 包这个链接 http r forge r project org R group id 343 它给了我一个可以绘制的chaid对象 我想要一个决策表 其中每个决策规则在一列中而不是决策树中 但我不明白如何访问这个 c
  • 无法使用 exoplayer 解析方法 getUserAgent()

    我该如何解决 无法解析方法getUserAgent 我试图创建一个视频播放器exoplayer我得到了她的错误String playerInfo Util getUserAgent this Video Player 这是完整的代码 pac
  • 用 C++ 创建一个独立的程序

    我正在使用 Visual Studio 2012 我希望创建一个完全独立的程序 可以通过直接复制 exe 文件在没有安装 Visual Studio 的计算机上使用 我曾经需要首先运行 Visual C 2012 Redistributab
  • 如何为旧版 Linux 内核的设置编译代码?

    我正在运行在 2 6 31 Linux 内核上运行的 Fedora 12 并且必须编译一些代码在2 6 11内核 受FC4支持 上运行二进制文件 有没有办法做到同样的事情 而无需安装 FC4 或运行 FC4 的虚拟机 另外 当您使用 fil
  • WKWebView loadFileURL 只工作一次

    我需要在 WKWebView 中加载本地文件 我正在使用新的ios9方法 nullable WKNavigation loadFileURL NSURL URL allowingReadAccessToURL NSURL readAcces
  • Xcode 6 进程启动失败:尝试启动应用程序超时

    我无法调试我的应用程序 因为当我运行它时 Xcode 给出错误 进程启动失败 尝试启动应用程序超时 在设备中 我看到黑屏 出现错误消息后应用程序启动 我怎样才能解决这个问题 我尝试更改代码签名身份和配置文件 并在 Xcode gt 首选项
  • optaplanners toList ConstraintCollector 有错误吗?

    在 optaplanner 8 1 中使用 toList ConstraintCollector 时 如下所示 factory from Lesson class groupBy Lesson getCourse ConstraintCol
  • 如何获取二值图像的垂直直方图并根据该直方图从一行中分段单词

    suppose i have an image in which there are some letters based on those letters of the image i want to show the vertical
  • 无法通过 instabot 将某些照片上传到 Instagram

    我无法使用 instabot 将某些照片上传到 Instagram 有些图片可以正常上传 有些则不行 我无法上传的是我使用 Pillow 编辑的 这是我的代码 之后我将向您展示我尝试过的内容 我使用 Pillow 的照片编辑功能 def m
  • 对数组中的值进行分组和计数

    我有一个包含对象的数组 如下所示 b issues fields status id 200 name Backlog fields status id 202 name close fields status id 201 name cl
  • Cygwin 终端不显示某些字符?

    我正在运行一个 Cygwin 库存安装 使用wget已添加包 如果我运行命令 wget qO tetristv com zapni tv php 我明白了 注意字符显示不正确 session OTA5Mjc0ODU5OA stream pl
  • 返回 FileStream 后无法删除临时文件

    我在 C MVC 应用程序中有一个函数 它创建一个临时目录和一个临时文件 然后使用 FileStream 打开该文件 将 FileStream 返回给调用函数 然后需要删除临时文件 但是 我不知道如何删除临时目录和文件 因为它总是错误地显示
  • 错误“Membership.Provider”属性必须是“ExtendedMembershipProvider”的实例

    我正在将 SimpleMembership 用于基于 ASP NET MVC4 的应用程序 我通过关注互联网上的一些博客来设置身份验证机制 以下仅作为背景 重点介绍 我有一个类 InitializeSimpleMembershipAttri
  • String.format、long 和 DateTime 转换

    如果问题是重复的 我很抱歉 我没有通过谷歌找到任何东西 对于我的问题 我有以下测试 public void testSecondsToMinutes long zero 0 long thirty seconds 30 long one m
  • 如何向现有的 Azure 表存储添加新列

    我们正在使用天蓝色表存储 并且有数千个使用相同架构的表 现在我们希望向这些表中添加另一列 我们如何在不删除表并重新添加的情况下向现有表中添加另一列 Windows Azure 表存储实际上没有列 每个实体 例如行 只是一组属性 没有固定的模
  • Angular 6 服务:providIn:“root”与 CoreModule

    对于 Angular 6 以下是创建单例服务的首选方法 import Injectable from angular core Injectable providedIn root export class UserService 来自角度
  • JasperReports:具有不同方向的子报表

    是否可以将纵向和横向子报表合并到一个报表中 我正在使用 iReport 2 0 4 似乎找不到任何选项来做到这一点 不幸的是 我认为这是不可能的 所有子报告均遵循主报告的方向
  • 没有函数与给定名称和参数类型匹配

    我的职能是 CREATE OR REPLACE FUNCTION FnUpdateSalegtab09 iacyrid Integer iRepId Integer iDrId Integer ivrid Integer imode sma