09Q*_*534 19 sql postgresql postgresql-9.2
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)
);
Run Code Online (Sandbox Code Playgroud)
基本插入是::
INSERT INTO app_for_leave(sno, eid, sd, ed, sid, status)
VALUES(1,101,'2013-04-04','2013-04-04',2,'f' );
Run Code Online (Sandbox Code Playgroud)
...
INSERT INTO app_for_leave(sno, eid, sd, ed, sid, status) VALUES (?, ?, ?, ?, ?, ?);
Run Code Online (Sandbox Code Playgroud)
我的要求::如何使用存储过程将数据插入表中?
Mik*_*sen 35
在PG11之前,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;
Run Code Online (Sandbox Code Playgroud)
然后你可以像这样调用它:
select * from MyInsert(1,101,'2013-04-04','2013-04-04',2,'f' );
Run Code Online (Sandbox Code Playgroud)
与真实存储过程相比,Pg存储函数的主要限制是:
从PG11开始,CREATE PROCEDURE语法介绍其提供的交易支持.
CREATE PROCEDURE MyInsert(_sno integer, _eid integer, _sd date, _ed date, _sid integer, _status boolean)
LANGUAGE SQL
AS $BODY$
INSERT INTO app_for_leave(sno, eid, sd, ed, sid, status)
VALUES(_sno, _eid, _sd, _ed, _sid, _status);
$BODY$;
Run Code Online (Sandbox Code Playgroud)
可以用以下方式调用:
CALL MyInsert(1,101,'2013-04-04','2013-04-04',2,'f' );
Run Code Online (Sandbox Code Playgroud)
从PostgreSQL 11开始,您可以创建存储过程并使用CALL调用它们:
CREATE PROCEDURE MyInsert(_sno integer, _eid integer, _sd date,
_ed date, _sid integer, _status boolean)
LANGUAGE SQL
AS $$
INSERT INTO app_for_leave(sno, eid, sd, ed, sid, status)
VALUES(_sno, _eid, _sd, _ed, _sid, _status);
$$;
CALL MyInsert(1,101,'2013-04-04','2013-04-04',2,'f' );
Run Code Online (Sandbox Code Playgroud)
此外,它允许处理交易
SQL存储过程
PostgreSQL 11引入了SQL存储过程,允许用户在过程中使用嵌入式事务(即BEGIN,COMMIT/ROLLBACK).可以使用CREATE PROCEDURE命令创建过程,并使用CALL命令执行.
| 归档时间: |
|
| 查看次数: |
64592 次 |
| 最近记录: |