对于自定义函数,“没有函数匹配给定的名称和参数类型”

时间:2014-01-22 12:07:40

标签: database postgresql plpgsql

PostgreSQL数据库中的新功能

帮我纠正PostgreSQL中编写的以下函数

功能

CREATE OR REPLACE FUNCTION insertinvoie(integer,integer,integer,integer,smallint,character varying, timestamp without time zone,integer,integer,integer,character varying,money,real,money,real,integer,integer,timestamp without time zone,integer,money,real,money,money,real,money,real,money,real,money,character varying,money,boolean,character varying,timestamp without time zone,character varying,character varying,boolean,character varying,character varying,integer,character varying,smallint,integer,integer,smallint,integer)
  RETURNS void AS
$BODY$ 
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($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$40,$41,$42,$43,$44,$45,$46); 
$BODY$
  LANGUAGE sql VOLATILE
  COST 100;
ALTER FUNCTION insertinvoie(integer,integer,integer,integer,smallint,character varying, timestamp without time zone,integer,integer,integer,character varying,money,real,money,real,integer,integer,timestamp without time zone,integer,money,real,money,money,real,money,real,money,real,money,character varying,money,boolean,character varying,timestamp without time zone,character varying,character varying,boolean,character varying,character varying,integer,character varying,smallint,integer,integer,smallint,integer)
  OWNER TO postgres;

像这样打电话

SELECT insertinvoie(5, 7, 0, 12, 1, '22754'::character varying ,'2014-01-22'::date, 2679, 22754, 2679, 'A.K.G.MEMORIAL HOSPITAL, PARAPPANANGADI'::character varying , 936, 0, 0, 0.4, 213388, 1, '2014-01-22 04:37:12 PM'::date, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ''::character varying, 0, False, ''::character varying,'2014-01-22'::date, ''::character varying, ''::character varying, False, ''::character varying, ''::character varying, 1, ''::character varying , 1,0,1,1,1);

错误获取

ERROR:  function insertinvoie(integer, integer, integer, integer, integer, character varying, date, integer, integer, integer, character varying, integer, integer, integer, numeric, integer, integer, date, integer, integer, integer, integer, integer, integer, integer, integer, integer, integer, integer, character varying, integer, boolean, character varying, date, character varying, character varying, boolean, character varying, character varying, integer, character varying, integer, integer, integer, integer, integer) does not exist
LINE 1: SELECT insertinvoie(5, 7, 0, 12, 1, '22754'::character varyi...
               ^
HINT:  No function matches the given name and argument types. You might need to add explicit type casts.

********** Error **********

ERROR: function insertinvoie(integer, integer, integer, integer, integer, character varying, date, integer, integer, integer, character varying, integer, integer, integer, numeric, integer, integer, date, integer, integer, integer, integer, integer, integer, integer, integer, integer, integer, integer, character varying, integer, boolean, character varying, date, character varying, character varying, boolean, character varying, character varying, integer, character varying, integer, integer, integer, integer, integer) does not exist
SQL state: 42883
Hint: No function matches the given name and argument types. You might need to add explicit type casts.
Character: 8

1 个答案:

答案 0 :(得分:1)

调用函数时,必须强制转换MONEY类型的文字。

或者,如果您愿意,可以单引号引用这些值。