如何使用PostgreSQL中的函数插入多行
发布时间:2020-12-13 16:05:48 所属栏目:百科 来源:网络整理
导读:我想在PostgreSQL中的函数表中插入多行. 这是我的桌子 CREATE TABLE mahasiswa( nim CHAR(10),nama VACHAR(40) CONSTRAINT pk_nim PRIMARY KEY (nim)); 这就是我创造的功能 CREATE FUNCTION insertdata(CHAR(10),varchar(40)) RETURNS VOID AS $$ INSERT INT
我想在PostgreSQL中的函数表中插入多行.
这是我的桌子 CREATE TABLE mahasiswa ( nim CHAR(10),nama VACHAR(40) CONSTRAINT pk_nim PRIMARY KEY (nim) ) ; 这就是我创造的功能 CREATE FUNCTION insertdata(CHAR(10),varchar(40)) RETURNS VOID AS $$ INSERT INTO mahasiswa VALUES ($1,$2); $$ LANGUAGE 'sql'; 当我这样调用函数时 SELECT insertdata ('1234567890','Nahrun'),('0987654321','Hartono'); 只插入一行. 如何修改我的函数以一次插入多行? 解决方法
你应该具备的功能是:
CREATE FUNCTION insertdata(varchar(10),varchar(40)) RETURNS VOID AS $$ INSERT INTO mahasiswa(col_name1,col_name2) VALUES ($1,$2); $$ LANGUAGE sql STRICT; >不要引用语言名称.这是一个标识符. 要插入多行,您可以将具有相同数量元素的复合类型或两个数组并行排列.展示后者: CREATE FUNCTION insertdata(_arr1 text[],_arr2 text[]) RETURNS VOID AS $$ INSERT INTO mahasiswa(col_name1,col_name2) SELECT unnest(_arr1),unnest(_arr2); $$ LANGUAGE sql STRICT; 呼叫: SELECT insertdata ('{1234567890,0987654321}','{Nahrun,Hartono}'); 我宁愿使用plpgsql函数并检查两个数组中的元素数量是否相同以防止出错.使用array_length(arr1,1)…… Postgres 9.4或更高版本…… …引入了一个不同的新变种,可以并行接受多个数组 – 没有上述黑客的怪癖(从不默认为CROSS JOIN) INSERT INTO mahasiswa(col_name1,col_name2) SELECT * FROM unnest(_arr1,_arr2); -- must be in FROM list > Unnest multiple arrays in parallel (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |