试图创建一个插入函数

Ada*_*dam 4 postgresql function 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;
Run Code Online (Sandbox Code Playgroud)

当我尝试运行它时,它抱怨VALUES(fname)的fname不是列.我来自于在MySQL和Sql Server中编写sprocs和函数.任何帮助为什么这不起作用,或我做错了什么?

Jer*_*hka 8

如果您不喜欢使用编号参数,可以使用PL/PGSQL:

CREATE OR REPLACE FUNCTION spcwriteperson(fname varchar(20)) RETURNS VOID AS
$$
BEGIN
    INSERT INTO person (firstName) VALUES (fname);
END
$$
  LANGUAGE 'plpgsql';
Run Code Online (Sandbox Code Playgroud)

PL/PGSQL还会为您提供更像SQL Server的T-SQL的语言.PL/PGSQL具有控制结构,变量和所有有趣的东西.PostgreSQL的SQL语言实现对可用的功能要严格得多 - 它是SQL的一个很好的实现,但它是一种查询语言,而不是一种过程编程语言.

  • 如果表`person`有一个名为`fid`的身份字段,所以我想返回`fid`我使用`INSERT INTO person (firstName) VALUES (fname) RETURNING fid;`怎么办? (2认同)

Ano*_*mie 6

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