我的职能是:
创建或替换函数fupdatesalegtab09
(
iacyrid Integer、iRepId Integer、iDrId Integer、ivrid Integer、imode smallint、itrno
varchar、itrdate时间戳、iacid Integer、ivrno varchar、iSuppId Integer、icustname
varchar、inetam money、idisrate real、idisamt money、iRoundOff real、ijrmid integer、iuserid
整数、iuserdtm时间戳、iVSNo整数、iRecdAmt货币、icstrate real、icstsaleamt
货币,货币,货币,真实货币,真实货币,真实货币,真实货币,真实货币,真实货币,真实货币
real、iCessAmt money、iodesc1 varchar、ioamt1 money、iCashCredit boolean、iOrderNo
varchar、iOrderDate时间戳、iCustAdd2 varchar、iRemarks varchar、iWhoRetSl布尔值、iPatName
varchar、iDrName varchar、iFormId integer、iSalesMan varchar、iCFMode smallint、iPatId
整数、iStkPtId整数、iDisType smallint、iBranchID整数
)
返回void作为
“开始
插入gtab09
(
acyrid、RepId、DrId、vrid、mode、trno、trdate、acid、vrno、SuppId、custname、netamt、,
disrate、disamt、舍入、jrmid、用户ID、用户DTM、VSNo、RecdAmt、cstrate、cstsaleamt、,
cstamt、tdrate、tdamt、cdrate、cdamt、CessRate、CessAmt、ODEC1、oamt1、现金信贷、,
订单号、订单日期、客户编号2、备注、WhoRetSl、PatName、DrName、FormId、销售员、,
CFMode,PatId,StkPtId,DisType,BranchID
)
价值观
(iacyrid、iRepId、iDrId、ivrid、imode、itrno、itrdate、iacid、ivrno、iSuppId、iCustomName、inetamt、idisra
te、idisamt、iRoundOff、ijrmid、iuserid、iuserdtm、iVSNo、iRecdAmt、icstrate、icstsaleamt、icstamt、it
drate、itdamt、icdrate、icdamt、ICESRATE、iCessAmt、iodesc1、ioamt1、iCashCredit、iOrderNo、iOrderDa
te、iCustAdd2、iMarks、iWhoRetSl、iPatName、iDrName、iFormId、iSalesMan、iCFMode、iPatId、iStkPtId、,
易卜拉契体);
结束;'
语言plpgsql VOLATILE
成本100;
我曾经这样称呼它:
选择FnUpdateSalegtab09(4,1,0,12,1,'9'::varchar,'2014-07-15'::时间戳,4048,'9'::varchar,4048,'MYCUSTOMER'::varchar,12::money,0,0::money,0,0::money,0,0::money,0,0::money,::varchar,0::money,0::money,False,::varcharalse,,::varchar,,::varchar,1,,::varchar,1,0,1,0,42)
错误是:
错误:函数fupdatesalegtab09(整数、整数、整数、整数、整数、整数、未知、未知、整数、整数、整数、整数、整数、整数、整数、整数、整数、整数、整数、整数、整数、整数、整数、整数、整数、未知、整数、布尔、未知、未知、布尔、未知、未知、未知、未知、未知n、 整数,未知,整数,整数,整数,整数,整数,整数,整数)不存在 第1行:选择FnUpdateSalegtab09(4,1,0,12,1,'9','2014-07-15',。。。 ^ 提示:没有与给定名称和参数类型匹配的函数。您可能需要添加显式类型转换。 **********错误**********
您的函数有两个smallint参数。
但是在调用中,您使用的是假定为integer类型的数字文本
字符串文字或字符串常量('123')不会立即键入。在显式赋值或强制转换之前,它将保持“未知”类型
但是,会立即键入数值文字或数值常量
既不包含小数点也不包含小数点的数值常量
指数如果其值为
适用于类型整数(32位);否则假定为类型
bigint如果其值符合类型bigint(64位),则为
视为包含小数点和/或
指数最初总是假定为类型数值
另见:
- PostgreSQL错误:指向_tsvector(字符变化,未知)的函数不存在
解决方案
为smallint参数或带引号(非类型化)的文本添加显式强制转换
演示
创建或替换函数f_typetest(smallint)
返回布尔值作为“选择真”语言sql;
错误呼叫:
从f_类型测试中选择*(1);
正确的呼叫:
从f_typetest('1')中选择*;
从f_typetest(smallint'1')中选择*;
从f_typetest(1::int2)中选择*;
从f_typetest中选择*('1'::int2);
db<;>;在这里拉小提琴
旧sqlfiddle.