在IBM i中使用RPGLE存储过程调用SQL查询数据并返回结果集
作者:佚名
上传时间:2023-05-29
运行软件:RPGLE
软件版本:V7R3M0
版权申诉
本示例代码演示了如何在IBM i (OS/400)操作系统上使用RPGLE存储过程调用SQL查询数据并返回结果集。通过本示例代码,可以灵活实现在IBM i上进行数据查询,方便进行后续业务处理。核心代码通过使用RPGLE语言中的相关函数来实现数据的查询和返回结果集操作。
// define module
ctl-opt Main(Directive:'OPTIONS(*SRCSTMT)');
dcl-pr SQLPrepare ExtProc('SQLPrepare');
pstmt pointer value
stmt char(32767) const options(*string)
len sqlu_int32 value
endsqlext;
end-pr;
dcl-pr SQLExecute ExtProc('SQLExecute');
pstmt pointer value
endsqlext;
end-pr;
dcl-pr SQLFetch ExtProc('SQLFetch');
pstmt pointer value
endsqlext;
end-pr;
dcl-pr SQLNumResultCols ExtProc('SQLNumResultCols');
pstmt pointer value
rc sqlu_int16 value
endsqlext;
end-pr;
// ...省略一些中间代码...
// main procedure
dcl-proc main;
// declare variables
dcl-s rc sqlu_int16;
dcl-s i sqlu_int16;
dcl-ds flds likeds(QSYS/QADBXRFDS_t) dim(128);
dcl-ds fldr likeds(QSYS/QADBXREF_t);
dcl-ds data likeds(QSYS/QADBXRFDS_t) dim(1);
dcl-ds col likeds(QSYS/QADBXREF_t);
dcl-s stmt varchar(300);
dcl-s error varchar(500);
dcl-s sqlca SQLCA_t;
dcl-s pstmt pointer;
dcl-s rows sqlu_int32;
// init variables
stmt = 'SELECT * FROM MYTABLE';
sqlca = *allx'00';
// clear fields
clear flds;
clear fldr;
clear data;
// prepare statement
pstmt = %alloc(%size(SQLDA));
pstmt = SQLDA;
callp SQLPrepare(pstmt: %addr(stmt): %len(stmt));
// execute statement
callp SQLExecute(pstmt);
// get number of result columns
rc = SQLNumResultCols(pstmt);
// fetch result columns
dow SQLFetch(pstmt) = 0;
clear col;
for i = 1 to rc;
// get column information
callp QDBRTVFD('MYLIB/MYTABLE': i: *omit: fldr);
// copy values from field reference to column reference
col.COLNAME = fldr.NAME;
col.DATATYPE = fldr.TYPENAME;
// get column value
callp QDBRTVCI('MYLIB/MYTABLE': i: data: *omit: rows);
col.COLVAL = data.FIELD;
// add column to result set
if %elem(rows) > 1;
rows += 1;
endif;
flds(rows) = col;
endfor;
// process result set
// ...省略一些中间代码...
enddo;
// clean up
callp SQLFreeStmt(SQL_CLOSE);
*inlr = *on;
end-proc;
免责申明:文章和图片全部来源于公开网络,如有侵权,请通知删除 server@dude6.com
用户评论
相关推荐
在IBM i中使用RPGLE存储过程调用SQL查询数据并返回结果集
本示例代码演示了如何在IBM i (OS/400)操作系统上使用RPGLE存储过程调用SQL查询数据并返回结果集。通过本示例代码,可以灵活实现在IBM i上进行数据查询,方便进行后续业务处理。核心代码
V7R3M0
RPGLE
2023-05-29 18:09
PostgreSQL中调用存储过程并返回数据集实例
主要介绍了PostgreSQL中调用存储过程并返回数据集实例,本文给出一创建数据表、插入测试数据、创建存储过程、调用创建存储过程和运行效果完整例子,需要的朋友可以参考下
PDF
70KB
2020-09-11 17:45
使用 SQL Server 存储过程来查询数据并返回结果集
本示例代码展示了如何使用 SQL Server 存储过程来查询数据并返回结果集。通过将查询逻辑打包为存储过程,可以减少重复代码,并提高查询的性能和安全性。CREATE PROCEDURE [dbo]
SQL Server 2012 及以上版本
Microsoft SQL Server Management Studio
2023-05-24 15:51
在 IBM i(OS/400) 中 실행 SQL 查询并返回结果集
该示例代码实现在 IBM i(OS/400) 中使用 SQL 查询,并将结果集存储在数组中返回。代码注释清晰明了,包括连接数据库,执行查询,遍历结果集等。// 连接数据库$conn = db2_c
IBM i 7.3
PHP
2023-04-29 23:09
LINQ TO SQL存储过程返回结果集
linqtosql存储过程,返回结果集。但结果集和多结果集。
DOCX
0B
2019-07-15 02:47
Oracle存储过程返回结果集
该文档详细讲解Oracle在存储过程中如何利用Out参数返回一个结果集。示例简单易懂。
DOCX
0B
2019-01-20 22:12
delphi如何调用sql存储过程并获取结果
delphi如何调用sql存储过程,并获取结果adostoredproc1.Close;adostoredproc1.ProcedureName:='sp_thchl';adostoredproc1.
TXT
0B
2019-09-06 07:23
Delphi中调用oracle的存储过程返回数据集
介绍了Delphi中调用oracle的存储过程返回数据集的各种方法
DOCX
0B
2019-05-27 18:54
C#中调用oracle存储过程返回数据集
C#中调用oracle存储过程返回数据集
RAR
0B
2019-05-31 18:32
Oracle中返回结果集的存储过程分享
Oracle不像SQLServer那样在存储过程中用Select就可以返回结果集,而是通过Out型的参数进行结果集返回的
PDF
34KB
2020-12-03 04:03