PostgreSQL 8.4及以上版,新增特性中包括支持 VARIADIC 函数, 是指函数支持不定数量的参数,只要靠后的参数的数据类型(除数组外)一致即可识别。在函数内部,这些一致类型的参数,会被当作一个数组来处理。但如果其中有一个类型和前后不一致,就无法支持。 这个特性可以让处理集合类的参数变得更灵活。 应用实例:商品表和标签(Tag)的多对多关系。存储过程如下: CREATE OR REPLACE FUNCTION goods_tag_add(a_goods_id int, VARIADIC a_tags text[], OUT t_id INT8) RETURNS SETOF INT8 AS $$ DECLARE t_rec record; i int4; BEGIN FOR i IN SELECT generate_subscripts(a_tags, 1) LOOP — RAISE NOTICE ‘tag: %’, a_tags[i]; // debug SELECT id FROM goods_tag WHERE name = a_tags[i] INTO t_rec; […]
RSS