【问题标题】:PostgreSQL, function use?PostgreSQL,函数使用?
【发布时间】:2011-12-31 01:35:25
【问题描述】:

我有这样的功能:

CREATE OR REPLACE FUNCTION f_insert_account(usernames character varying, passwds  
character varying, identitass integer, jeniss smallint, statuss smallint, cnames 
character varying, unames character varying)
RETURNS character varying AS
$BODY$
DECLARE
iduserx int4;
usernamex varchar;
er int2:=0;
pesan varchar:='';
BEGIN
insert into t_account(username,passwd,identitas,jenis,status,cname,uname)
values(usernamex,f_encr(passwds),identitass,jeniss,statuss,cnames,unames);
RETURN pesan;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;
ALTER FUNCTION f_insert_account(usernames character varying, passwds character 
varying, identitass integer, jeniss smallint, statuss smallint, cnames character 
varying, unames character varying) OWNER TO postgres;

GRANT EXECUTE ON FUNCTION f_insert_account(usernames character varying, passwds 
character varying, identitass integer, jeniss smallint, statuss smallint, cnames  
character varying, unames character varying) TO public;

GRANT EXECUTE ON FUNCTION f_insert_account(usernames character varying, passwds 
character varying, identitass integer, jeniss smallint, statuss smallint, cnames   
character varying, unames character varying) TO postgres;

然后我会这样使用:

select f_insert_account('dayat', 'dayat', 1, 1, 1, 'cname', 'uname')

总是出现这样的错误: 错误:函数 f_insert_account("unknown", "unknown", integer, integer, integer, "unknown", "unknown") 不存在 SQL 状态:42883 提示:没有函数匹配给定的名称和参数类型。您可能需要添加显式类型转换。 字符:8

为什么会这样???

谢谢,

达亚特

【问题讨论】:

  • 您展示了f_insert_account() 的创建,然后抱怨f_account_sp() 的错误。请澄清。

标签: postgresql


【解决方案1】:

smallint 数据类型有点棘手,因为您需要转换这些:

select f_insert_account('dayat', 'dayat', 1, 1::smallint, 1::smallint, 'cname', 'uname')

如果您想避免这种情况,我建议您将函数定义更改为使用普通的旧 integer 类型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-31
    • 2017-09-05
    • 1970-01-01
    • 2012-02-13
    • 2015-01-01
    • 2014-09-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多