ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

db2笔记_3_调用存储过程

2022-08-10 15:00:08  阅读:175  来源: 互联网

标签:调用 cur1 Max 笔记 st SET Sql db2 DECLARE


调用存储过程

--出参  ?出参名$类型$out,后面跟入参

CALL 存储过程名(?ret$integer$out,?msg$varchar$out,'XXX',1,NULL);

创建存储过程

create or replace procedure 存储过程名(
    OUT o_ret  int,
    OUT o_info  VARCHAR(100),
    IN i_Param1  VARCHAR(100),
    IN i_Param2  int,
    IN i_Param3  VARCHAR(100)
) 
specific 存储过程名
RESULT SETS 2 --返回结果集数量
LANGUAGE SQL

BEGIN
  DECLARE SQLCODE INT DEFAULT 0;
  DECLARE SQLSTATE CHAR(5) DEFAULT '00000';
  DECLARE v_sqlcode INT DEFAULT 0;
  DECLARE v_sqlstate CHAR(5) DEFAULT '00000';
  DECLARE v_Max int;
  DECLARE v_Min int;
  DECLARE v_Sql_Max varchar(1000);
  DECLARE v_st_Max statement;
  DECLARE v_cur1_Max CURSOR WITH RETURN FOR v_st_Max;
  DECLARE v_Sql varchar(1000);
  DECLARE v_st statement;
  DECLARE v_cur1 CURSOR WITH RETURN FOR v_st;

  SET v_Min = i_Param2;

  SET v_Sql_Max = 'select max(id) from tableName';
  prepare v_st_Max from v_Sql_Max;
  OPEN v_cur1_Max;
  FETCH v_cur1_Max INTO v_Max;
  CLOSE v_cur1_Max;

  set v_sql='select * from tableName where id < '||v_Max ||' AND '|| ' RN > '||v_Min||' WITH ur';
  PREPARE v_st FROM v_Sql;
  OPEN v_cur1;

  BEGIN
    DECLARE cur2 CURSOR WITH RETURN TO caller FOR
    select * from tableName2 where aaa = i_Param2; 
    OPEN cur2;
  END;
    
  DECLARE EXIT HANDLER FOR SQLEXCEPTION
  BEGIN
    SET v_sqlcode = SQLCODE,v_sqlstate = SQLSTATE;
    SET o_ret = -99,o_info = '在['||coalesce(o_info,'未知错误')||']处发生异常 SQLCode:'||char(v_sqlcode)||'SQLState:'||char(v_sqlstate);
  END;
  
  SET o_ret = 99, o_info = ''; 
  
END;

 

标签:调用,cur1,Max,笔记,st,SET,Sql,db2,DECLARE
来源: https://www.cnblogs.com/luyuting/p/16572463.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有