CREATE PROCEDURE data_wtptest( IN in_taskid_timestamp varchar(30),
OUT o_err_no int,
OUT o_err_msg varchar(1024))
LANGUAGE SQL
P1: BEGIN ATOMIC
--声明开始
--临时变量出错变量
DECLARE SQLCODE integer default 0;
DECLARE SQLStmt varchar(1024) default '';
DECLARE r_code integer default 0;
DECLARE state varchar(1024) default 'AAA';--记录程序当前所作工作
DECLARE at_end int DEFAULT 0;
DECLARE t_destnetid int default 0;
DECLARE t_recvid varchar(30) default '';
DECLARE SP_Name varchar(50) default 'data_wtptest';
--声明放游标的值
--声明动态游标存储变量
DECLARE stmt1 STATEMENT;
DECLARE c1 CURSOR FOR stmt1;
--声明出错处理
DECLARE EXIT HANDLER FOR SQLEXCEPTION
begin
set r_code=SQLCODE;
set o_err_no=1;
set o_err_msg='处理['||state||']出错 ,'||'错误代码SQLCODE:['||CHAR(r_code) || '].';
insert into fcc_sp_log(object,name,value) values(SP_Name,in_taskid_timestamp,o_err_msg);
end;
DECLARE continue HANDLER for not found
begin
set at_end = 1;
set state='找到0行记录或已经到记录结尾.';
end;
--声明结束
SET state='[add]单独测试中,统计条数';
SET SQLStmt='SELECT count(*) FROM wtp_pre_download where task_timestamp = ?';
PREPARE stmt1 FROM SQLStmt;
OPEN c1 USING in_taskid_timestamp;
FETCH c1 INTO t_destnetid;
CLOSE c1;
SET state='[add]查具体信息';
SET at_end = 0;
SET SQLStmt='SELECT recv_userid FROM wtp_pre_download where task_timestamp = ?';
PREPARE c1 FROM SQLStmt;
OPEN c1 USING in_taskid_timestamp;
SET state='[add]************';
FETCH c1 INTO t_recvid;
SET state='[add]============';
insert into fcc_sp_log(object,name,value) values(SP_Name,in_taskid_timestamp,t_recvid);
END p1
分享到:
相关推荐
7. `存储过程关于loop的说明.txt`:此文本文件可能深入探讨了在DB2存储过程中使用循环结构(如WHILE或FOR loops)的方法,如何处理循环中的数据,以及如何控制流程控制。 通过这些文件,你可以学习到DB2数据库系统...
- **看存储过程文本**:使用`VALUES SQLSCRIPT('存储过程名')`查看存储过程的文本内容。 - **看表结构**:使用`SELECT * FROM SYSCAT.COLUMNS WHERE TABSCHEMA = '模式名' AND TABNAME = '表名'`查看表结构。 - **看...
在这个例子中,`connectionString`是数据库连接字符串,"YourProcedureName"是你需要调用的存储过程名,`@param1`和`@param2`是传递给存储过程的参数及其对应的值。 对于DB2数据库,可能需要特别注意一些与SQL ...
- **类似于ORACLE的TRUNCATE清表但不记日志的做法**:在DB2中使用`TRUNCATE TABLE`命令清除表中的所有数据而不记录日志。 - **用CLI编程批量的INSERT**:使用CLI(Call Level Interface)进行批量插入操作,提高...
在DB2中,无论是C语言还是SQL编写的存储过程,其名称都有长度限制。一般而言,名称不应超过128个字符。 #### 怎样获得自己的数据库连接句柄 可以使用`DB2_CONNECT`函数来建立连接,并返回连接句柄。例如: ```sql ...
下面通过两个具体的例子来进一步了解嵌入式SQL的使用方法。 ##### 例1:使用IBM DB2进行查询 ```c #include #include #include #include"util.h" #include EXECSQL INCLUDE SQLCA; int main() { EXECSQL BEGIN ...
嵌入式SQL(E-SQL)是将SQL语句直接嵌入到宿主语言(如C,COBOL,FORTRAN等)程序中的一种技术,它使得程序员可以在编写应用程序时直接处理数据库,而不必通过单独的数据库接口。这种集成使得程序更加灵活,能够更...
- **声明嵌入SQL语句中使用的C变量**:用于在SQL语句中传递值或接收查询结果。 - **连接数据库**:建立与数据库的连接。 - **数据的查询和修改**:执行SELECT、INSERT、UPDATE、DELETE等操作。 - **游标的使用**:...
12. **从存储过程返回结果集(游标)的用法:** 通过声明游标并在存储过程中打开和读取它来返回多行数据。 13. **类型转换函数:** 如`CAST`或`CONVERT`用于在不同类型之间进行数据转换。 14. **存储过程的互相调用:** ...
1. **简单示例**:展示了如何在C程序中使用DB2的嵌入SQL语句进行数据操作。 2. **嵌入SQL语句**: - **宿主变量**:同SYBASE,用于存储和传递数据。 - **单行查询**,**多行查询**,**插入、删除和修改操作**:...
- **嵌入PL/SQL**:可以直接在C/C++程序中使用PL/SQL块。 - **动态SQL语句**:支持动态构建和执行SQL语句。 #### 第五节 INFORMIX的嵌入SQL/C语言 Informix数据库的嵌入SQL提供了与上述数据库相似的功能,但也有其...
在这个例子中,我们定义了一个名为`get_above_average_salaries`的存储过程,它返回一个游标`result_set`,其中包含了薪水高于平均值的员工的信息。该存储过程被标记为`NOT DETERMINISTIC`,意味着结果可能因为外部...
总结来说,嵌入式 SQL 允许程序员在各种数据库管理系统(如 Informix、DB2、Sybase、Oracle、SQL Server)中集成 SQL 语句,实现高效的数据操作。理解并熟练运用 E-SQL 能帮助开发者编写出更高效、更灵活的数据库...
6. **游标的两种定义方式:** 游标可以通过声明游标的方式或使用动态SQL来定义。 7. **修改游标的当前记录的方法:** 使用`UPDATE OF`子句可以更新游标当前行的数据。 8. **类似DECODE的转码操作:** 可以使用`CASE ...