Function 正在尝试创建插入函数

Function 正在尝试创建插入函数,function,postgresql,pgadmin,Function,Postgresql,Pgadmin,我正在尝试使用pgAdmin在Postgres 8.4中创建一个函数,我有以下代码 CREATE OR REPLACE FUNCTION spcwriteperson(IN fname varchar(20)) RETURNS VOID AS $BODY$ INSERT INTO person ("firstName") VALUES(fname); $BODY$ LANGUAGE sql VOLATILE COST 100; 当我试着运行它时,它抱怨fname at VA

我正在尝试使用pgAdmin在Postgres 8.4中创建一个函数,我有以下代码

CREATE OR REPLACE FUNCTION spcwriteperson(IN fname varchar(20))
  RETURNS VOID AS
$BODY$
    INSERT INTO person ("firstName") VALUES(fname);
$BODY$
  LANGUAGE sql VOLATILE
  COST 100;

当我试着运行它时,它抱怨fname at VALUES(fname)不是一个列。我是在MySQL和Sql Server中编写存储过程和函数的。有没有关于为什么不起作用或我做错了什么的帮助?

SQL语言函数的参数是编号的,
$1
$2
,等等。有关详细信息,请参阅。如果需要命名参数和更高级的功能,可以使用。

如果不喜欢使用编号参数,可以使用:


PL/PGSQL还将为您提供一种更像SQLServer的T-SQL的语言。PL/PGSQL有控制结构、变量和所有这些有趣的东西。PostgreSQL的SQL语言实现对可用功能的要求要严格得多——它是SQL的优秀实现,但它是一种查询语言,而不是过程编程语言

如果表
person
有一个名为
fid
的标识字段,因此我想返回
fid
我使用
插入返回fid的person(firstName)值(fname)?如何返回插入的默认结果(例如,插入X条记录)?如果用户知道函数是成功还是失败,则最好返回有意义的结果
CREATE OR REPLACE FUNCTION spcwriteperson(fname varchar(20)) RETURNS VOID AS
$$
BEGIN
    INSERT INTO person (firstName) VALUES (fname);
END
$$
  LANGUAGE 'plpgsql';