我正在使用plpgsql创建一个存储过程,通过传递一个类型数组并在过程中执行循环,以便我可以插入每个信息类型
CREATE TYPE info AS( name varchar,email_add varchar,contact_no varchar ); CREATE OR REPLACE FUNCTION insert_info( info_array info[] ) RETURNS varchar AS $$ DECLARE info_element info; BEGIN FOREACH info_element IN ARRAY info_array LOOP INSERT INTO info_table( name,email_add,contact_no ) VALUES( info_element.name,info_element.email_add,info_element.contact_no ); END LOOP; RETURN 'OK'; END; $$LANGUAGE plpgsql;
问题是我不知道如何使用数组输入的函数.我做了一些实验(只有一些愚蠢的输入):
SELECT insert_info( ARRAY[('Arjay','[email protected]','1234567')] );
但是Postgresql说这是一个记录[]而我还没有测试过Loop部分……
我在这个链接中发现了类似的问题:
Declare variable of composite type in PostgreSQL using %TYPE
但它没有使用数组.如果这只是一个重复的问题,也许你们可以指出我正确的方向!
电话会是:
SELECT insert_info('{"(Arjay,[email protected],1234567)"}'::info[]);
或者使用ARRAY构造函数:
SELECT insert_info((ARRAY['(Arjay,1234567)','(Bjay,[email protected],2234567)'])::info[]);
要么:
SELECT insert_info( ARRAY['(Arjay,1234567)'::info,2234567)']);
INSERT INTO info(name,contact_no) SELECT * FROM unnest('{"(Arjay,1234567)","(Bjay,2234567)"}'::info[]);
CREATE OR REPLACE FUNCTION insert_info(info_array info[]) RETURNS void AS $func$ INSERT INTO info(name,contact_no) SELECT * FROM unnest($1) $func$LANGUAGE sql;
同样的电话.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。