Chinaunix

标题: 在RPG Stored Procedure中如何处理ResultSet [打印本页]

作者: xmer    时间: 2004-08-20 12:58
标题: 在RPG Stored Procedure中如何处理ResultSet
请问如果store procedure 是用RPG 或ILE RPG 程序,那如何处理result set?
作者: xmer    时间: 2004-09-10 09:53
标题: 在RPG Stored Procedure中如何处理ResultSet
很多天了,有消息了吗?
作者: qingzhou    时间: 2004-09-10 10:48
标题: 在RPG Stored Procedure中如何处理ResultSet
惭愧,我RPGLE目前正在自学中,所以无法针对你的问题实际解答。
不知道IBM技术支持中心的文章是否可以帮得上忙?

============================================================
        《在Stored Procedure中返回ResultSet.》
       
产品:DB2/400
平台:iSeries
版本:V5RxMx

问题:在Stored Procedure中返回ResultSet.

解答:从R510以后,在UDB/400的SQL Stored Procedure可以支持ResultSet类型的返回值.
       
例:
       
CREATE PROCEDURE QGPL/TEST1
ResultSetS 1 //指定返回的ResultSet的个数
LANGUAGE SQL
BEGIN
DECLARE QGPL/C1 CURSOR WITH RETURN FOR //使用WITH RETURN指定该CURSOR返回ResultSet
SELECT * FROM QGPL/CUSTOMER;
OPEN C1; //和普通的CURSOR处理不同,这里只需要打开CURSOR,不需要FETCH和执行CLOSE CURSOR语句
END;
       
对ResultSet的检查可以使用Client Access Express提供的Operation Navigator中的的run sql script模块检查
       
       
下面是使用Visual Basic编写的使用Stored Procedure的实例:
       
在处理窗口中只有一个列表对象,lstCustomer和一个按钮cmdGetCustName。
当单击该按钮的时候,调用AS/400后台存储过程,并把结果显示在列表控件中.
       
Const cnsSource = <ODBCSource>;  ==〉指定自己定义ODBC data source
Const cnsUserID = <UserID>;  ==〉指定连接用户
Const cnsPasswd = <assword>;  ==〉连接密码
Option Explicit
Dim Cnn As ADODB.Connection  ==〉是用ADO进行数据库连接
Dim Cmd As ADODB.Command
Dim Rs As ADODB.Recordset  ==〉定义Recordset对象接受查询结果
Dim strCnn As String
Dim strSQL As String
       
Private Sub cmdGetCusName_Click()  ==〉单击CustName事件
Set Rs.Source = Cmd
Rs.Open
While Not Rs.EOF
lstCustomer.AddItem Rs(0)
Rs.MoveNext  ==〉移动数据库指针
Wend  ==〉while循环结尾
Rs.Close
End Sub
       
Private Sub Form_Load()  ==〉表单装载事件
Set Cnn = New ADODB.Connection
strCnn = "ROVIDER=MSDASQL;dsn=" & cnsSource & ";uid=" & cnsUserID & ";pwd="
& cnsPasswd & ";"
With Cnn
.ConnectionString = strCnn
.CursorLocation = adUseClient
.Open
End With
strSQL = "{call library.getCusName()}"  ==〉调用存储过程
Set Cmd = New ADODB.Command
Set Cmd.ActiveConnection = Cnn
Cmd.CommandText = strSQL
Cmd.CommandType = adCmdText
Set Rs = New ADODB.Recordset  ==〉把ResultSet传入Rs
Rs.CursorType = adOpenStatic
Rs.LockType = adLockReadOnly
End Sub
       
Private Sub Form_Unload(Cancel As Integer)  ==>;窗口卸载事件
Cnn.Close
Set Cnn = Nothing
Set Cmd = Nothing
Set Rs = Nothing  ==〉释放资源
End Sub




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2