There is error at the examples in PL/pgSQL

Started by Lu Raymondabout 25 years ago2 messageshackers
Jump to latest
#1Lu Raymond
raymond_lu99@hotmail.com

Hello,all

I use your a example of PL/pgSQL, but I found some errors when I execute
these codes. The details are followings,

First, I create a exam.sql that includes these codes as followings,

CREATE TABLE emp (
empname text,
salary int4,
last_date datetime,
last_user name);

CREATE FUNCTION emp_stamp () RETURNS OPAQUE AS'
BEGIN
-- Check that empname and salary are given
IF NEW.empname ISNULL THEN
RAISE EXCEPTION ''empname cannot be NULL value'';
END IF;
IF NEW.salary ISNULL THEN
RAISE EXCEPTION ''% cannot have NULL salary'', NEW.empname;
END IF;

-- Who works for us when she must pay for?
IF NEW.salary < 0 THEN
RAISE EXCEPTION ''% cannot have a negative salary'', NEW.empname;
END IF;

-- Remember who changed the payroll when
NEW.last_date := ''now'';
NEW.last_user := getpgusername();
RETURN NEW;
END;
' LANGUAGE 'plpgsql';

CREATE TRIGGER emp_stamp BEFORE INSERT OR UPDATE ON emp
FOR EACH ROW EXECUTE PROCEDURE emp_stamp();

Secondly, I execute exam.sql and the postgress can create the table emp,
the function emp_stamp() and the trigger emp_stamp seccessfully.But when I
insert one record to table emp, there are some errors on the screen.
the insert statement is followings,
INSERT INTO emp Values('','','20001220','raymond');

the error of screen is:
NOTICE: plpgsql: ERROR during compile of emp_stamp near line 1
"RROR: parse error at or near "

Why? and what wrong is it? Please give me reply as possible as you can.
Thanks!

_________________________________________________________________________
Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com.

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Lu Raymond (#1)
Re: There is error at the examples in PL/pgSQL

"Lu Raymond" <raymond_lu99@hotmail.com> writes:

NOTICE: plpgsql: ERROR during compile of emp_stamp near line 1
"RROR: parse error at or near "

Save your script with Unix-style newlines, not DOS-style (LF not CR/LF).

regards, tom lane