我有.sql文件,我在其中创建一个表并插入行。
CREATE TABLE vehicle (
name TEXT PRIMARY KEY,
id INTEGER DEFAULT 0
)
INSERT INTO vehicle values('car',1);
INSERT INTO vehicle values('bus',2);
我没有执行插入命令,而是想要一个能够插入两行以上的函数。我怎么称呼这个功能?
CREATE OR REPLACE FUNCTION insert()
RETURNS VOID AS $$
BEGIN
INSERT INTO vehicle values('car',1);
INSERT INTO vehicle values('bus',2);
RETURN;
END;
$$ LANGUAGE 'plpgsql';
答案 0 :(得分:1)
为什么需要这样的功能? 可能,您只需要将所有内容包装到单个事务块中吗?
begin;
CREATE TABLE vehicle (
name TEXT PRIMARY KEY,
id INTEGER DEFAULT 0
);
INSERT INTO vehicle values('car',1);
INSERT INTO vehicle values('bus',2);
commit;
如果不是,请考虑使用“匿名”plpgsql块,无需明确定义函数 - 当您只需运行一次代码时,它非常有用:
do $$
begin
INSERT INTO vehicle values('car',1);
INSERT INTO vehicle values('bus',2);
end;
$$ language plpgsql;
最后,如果你确实需要一个函数,好吧,你正确定义了它,所以让我们运行它。在Postgres中,存储过程是函数,这意味着它们可以很容易地集成到常规SQL语句中,所以让我们只使用SELECT(在Postgres中,SELECT语句被允许没有FROM子句):
select insert();