Re: Newbie question: How to CREATE FUNCTION

From: Joe Conway <mail(at)joeconway(dot)com>
To: Steven Chau <stevenc(at)astri(dot)org>
Cc: pgsql-sql(at)postgresql(dot)org
Subject: Re: Newbie question: How to CREATE FUNCTION
Date: 2003-05-15 03:12:03
Message-ID: 3EC30583.8040608@joeconway.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

Steven Chau wrote:
> Hi,
>
> I am new to PostgreSQL. So, please forgive my ignorane.
>
> Can anyone tell me how to create a FUNCTION in PostgreSQL that performs the
> same duty as the following MsSQL stored procedure?

Here it is without any commentary. I'll leave the explanation to some
quality time spent with the fine manual. Here are a couple of starting
points:
http://www.us.postgresql.org/users-lounge/docs/7.3/postgres/functions-sequence.
http://www.us.postgresql.org/users-lounge/docs/7.3/postgres/plpgsql.html

-- create a sequnce and the employees table
create sequence public.employees_id_seq;
create table public.employees(
id integer not null
default nextval('public.employees_id_seq')
primary key,
name text,
title text
);

-- create the addemployee function in plpgsql
CREATE OR REPLACE FUNCTION addemployee(text, text)
RETURNS integer AS '
DECLARE
v_name alias for $1;
v_title alias for $2;
v_rowcount integer;
v_id integer;
BEGIN
-- Add the employee into the Employees table
INSERT INTO employees (name, title)
VALUES (v_name, v_title);

GET DIAGNOSTICS v_rowcount = ROW_COUNT;
IF v_rowcount != 1 THEN
-- Error
v_id := -1;
ELSE
-- Otherwise return the id through
SELECT into v_id currval(''public.employees_id_seq'');
END IF;

RETURN v_id;
END;
' LANGUAGE 'plpgsql';

regression=# SELECT addemployee('John Doe', 'DBA');
addemployee
-------------
1
(1 row)

regression=# SELECT addemployee('Jane Foo', 'Senior DBA');
addemployee
-------------
2
(1 row)

regression=# SELECT * FROM employees;
id | name | title
----+----------+------------
1 | John Doe | DBA
2 | Jane Foo | Senior DBA
(2 rows)

> Can you also tell me how to add a new language (if necessary) like pgsql
> into PostgreSQL? Pointers to learning pgsql will also be appreciated.
>

http://www.us.postgresql.org/users-lounge/docs/7.3/postgres/xplang-install.html

HTH,

Joe

In response to

Browse pgsql-sql by date

  From Date Subject
Next Message Matt Mello 2003-05-15 05:44:21 Re: "deadlock detected" documentation
Previous Message Victor Yegorov 2003-05-15 02:37:21 Re: Newbie question: How to CREATE FUNCTION