CREATE OR REPLACE FUNCTION get_user(id INT) RETURNS user_record AS $$ BEGIN RETURN (SELECT id, name, age FROM users WHERE id = $1); END; $$ LANGUAGE plpgsql; 在上面的代码中,我们首先定义了一个名为user_record的新数据类型,它包含三个字段:id,name, 和age。然后,我们定义了一个名为get_us...
如果采用这种形式,你的function代码看起来会像这样:CREATE OR REPLACE FUNCTION function1 () RETURNS setof table1 AS $body$ DECLARE result record; BEGIN for result in select * from table1 loop return next result; end loop; return; END; $body$ LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT S...
--3 方法二:使用 reutrn query 返回多条记录( 单列) CREATE OR REPLACE FUNCTION skytf.func_test_result_query_single ( in_id integer) RETURNSSETOF varcharas $$ DECLARE v_rec RECORD; BEGIN return query ( (select name from test_result1 where id = in_id) union (select name from test_resul...
早先postgresql 只有函数(Function),并不支持存储过程(Procedure),可能是设计者认为函数足够用了吧,后来在版本11加入了存储过程, 说是这样可以应付事务,但是并不支持存储过程返回数据集! 如果你在存储过程里select 了数据,然后直接在客户端SQL工具窗口里调用 call ,它会报一个错: callproc1(1); SQL Error [42601]...
我正在编写一个sql程序,该程序创建一个表,其中包含在函数中计算的列。函数返回记录类型。这是标题的样子: create or replace function get_items(col1 int, col2 int) returns record 我希望能够做到的是: create table table_items as ( with q as ( ...
RETURN result; 代码语言:txt 复制 函数的完整示例代码如下: 代码语言:sql 复制 CREATEORREPLACEFUNCTIONget_users()RETURNSTABLE(idINTEGER,nameVARCHAR(50),emailVARCHAR(50))AS$$DECLAREresult RECORD;BEGINSELECT*INTOresultFROMusers;RETURNQUERYSELECT*FROMresult;END;$$LANGUAGEplpgsql; ...
create or replace function ads.rtnRecord ()returns recordas $$declarev_data record;begin v_data := (1, 'Hello'::character varying); return v_data;end;$$ language plpgsql;调用SQL(用as将record各个成员的名称和类型定义出来):select * from ads.rtnRecord() as (a int, b character...
RETURN NEXTv_rec_record; ENDLOOP; RETURN ; END; $$ LANGUAGE PLPGSQL; SELECT * FROMret_row(); --下面是用自定义TYPE返回一个RECORD,可以用RECORD类型和%ROWTYPE类型来付值 CREATE TYPEret_typeAS ( bhVARCHAR, xmVARCHAR ); CREATE OR REPLACE FUNCTIONret_type() RETURNS SETOFret_typeAS $$ DECLARE...
postgresql function返回多个 很久不写代码了。日前有个脑水的朋友提出要从sql存储过程多个结果集中取得一个想要的结果集在自己的另一个存储过程中用,我考! 我回答:“自己写个去用@Table,游标,临时表都可以。” 他又说:“那我不是要重写很多?” 接着又说:“我要从系统存储过程中得到,那我还要重写系统存储...
declare r record; begin OLD.id := OLD.id+1; NEW.id := NEW.id+1; select 1 as id into r; raise notice '%, old.id:%. new.id:%', TG_NAME, OLD.id, NEW.id; return r; end; language plpgsql; CREATE FUNCTION postgres=# update t_ret set info=’new’ where id=2 returning *...