KingbaseES OUT 类型参数过程与函数的调用方法
对于含有 out 类型参数的过程或者函数,只能通过块方式调用,这是因为,ksql 还不支持类似 Oracle 那样通过 var 定义变量。
一、带OUT的procedure 调用
创建过程:
create or replace procedure proc1( v_id integer, out v_retcode text, out v_retinfo text, out v_row_num integer) AS declare begin insert into table_new(id, name, age) select t.id, t.name, m.age from student t, employees m where t.id=m.id and t.id=v_id; GET DIAGNOSTICS V_ROW_NUM := ROW_COUNT; -- 执行成功后的返回信息 V_RETCODE := 'SUCCESS'; V_RETINFO := '结束'; --异常处理 EXCEPTION WHEN OTHERS THEN V_RETCODE := 'FAIL'; V_RETINFO := SQLERRM; end; /
调用过程:
declare v_retcode text; v_retinfo text; v_row_num integer; v_id integer; begin v_id:=30; CALL proc1(v_id, v_retcode, v_retinfo, v_row_num); raise notice 'proc1 result is: %, %, %', v_retcode, v_retinfo, v_row_num; end; /
二、带 OUT 参数的function调用
创建函数:
create or replace function fun1( v_id integer, out v_retcode text, out v_retinfo text, out v_row_num integer) AS $$ declare begin insert into table_new(id, name, age) select t.id, t.name, m.age from student t, employees m where t.id=m.id and t.id=v_id; GET DIAGNOSTICS V_ROW_NUM := ROW_COUNT; -- 执行成功后的返回信息 V_RETCODE := 'SUCCESS'; V_RETINFO := '结束'; --异常处理 EXCEPTION WHEN OTHERS THEN V_RETCODE := 'FAIL'; V_RETINFO := SQLERRM; end; $$ language plpgsql /
调用函数:
--function 可以不需要在 block 里调用 select fun1(12); --但如果需要out返回信息,则必须通过block 传入变量 declare v_retcode text; v_retinfo text; v_row_num integer; v_id integer; begin v_id:=30; select * from fun1(v_id) into v_retcode, v_retinfo, v_row_num; raise notice 'proc1 result is: %, %, %', v_retcode, v_retinfo, v_row_num; end; /
KINGBASE研究院
分类:
PLSQL
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!