Как вставить данные в таблицу с помощью хранимых процедур в postgresql

CREATE TABLE app_for_leave ( sno integer NOT NULL, eid integer, ename varchar(20), sd date, ed date, sid integer, status boolean DEFAULT false, CONSTRAINT pk_snoa PRIMARY KEY (sno) ) ; 

Основная вставка:

 INSERT INTO app_for_leave(sno, eid, sd, ed, sid, status) VALUES(1,101,'2013-04-04','2013-04-04',2,'f' ); 

… INSERT INTO app_for_leave (sno, eid, sd, ed, sid, status) VALUES (?,?,?,?,?,?);

Мои требования :: Как вставить данные в таблицу с помощью stored procedures?

PostgreSQL не поддерживает хранимые процедуры , как таковые, но вы можете получить тот же результат с помощью функции. Например:

 CREATE FUNCTION MyInsert(_sno integer, _eid integer, _sd date, _ed date, _sid integer, _status boolean) RETURNS void AS $BODY$ BEGIN INSERT INTO app_for_leave(sno, eid, sd, ed, sid, status) VALUES(_sno, _eid, _sd, _ed, _sid, _status); END; $BODY$ LANGUAGE 'plpgsql' VOLATILE COST 100; 

Затем вы можете вызвать его так:

 select * from MyInsert(1,101,'2013-04-04','2013-04-04',2,'f' ); 

Основными ограничениями хранимых функций Pg по сравнению с истинными хранимыми процедурами являются:

  1. невозможность возврата нескольких наборов результатов
  2. нет поддержки автономных транзакций (BEGIN, COMMIT и ROLLBACK в рамках функции)
  3. нет поддержки синтаксиса CALL SQL-стандарта, хотя драйверы ODBC и JDBC будут переводить вызовы для вас.

пример

PostgreSQL не поддерживает хранимые процедуры , но вы можете получить тот же результат с помощью функции.

Независимо от того, какие данные вы хотите вставить в таблицу, задаются как параметры для создаваемой функции.

CREATE OR REPLACE означает, что если функция с тем же именем (вы используете) уже присутствует в базе данных, то она будет заменена, или если функция с таким же именем отсутствует, будет создана новая функция.

Вы должны написать запрос insesrtion внутри тела функции.

 CREATE OR REPLACE FUNCTION Insert_into_table(_sno INTEGER, _eid INTEGER, _ename VARCHAR(20), _sd DATE, _ed DATE, _sid INTEGER) RETURNS void AS $BODY$ BEGIN INSERT INTO app_for_leave(sno, eid, sd, ed, sid) VALUES(_sno, _eid, _sd, _ed, _sid); END; $BODY$ LANGUAGE 'plpgsql' VOLATILE COST 100; 

Как вы уже упомянули в таблице значение по умолчанию для столбца Status , теперь нет необходимости вставлять данные в этот столбец

Вот ссылка SQLFiddle для вашего понимания