VB6:通过ADO访问Oracle存储过程返回的结果集
微软的MDAC中oledb for oracle 驱动——对过程参数:估计:位置绑定
- 该驱动最新支持到Oracle8i的水平,且不再更新了
- 使用该驱动。只能使用ODBC的存储过程调用方式: "{call procename (?,?,....)}"
- 只能支持返回一个记录集
- 该记录集所在的形式sys_refcursor参数可以是最后一个参数 或者是 倒数第二个参数
- 不支持调用时省略具有默认值的参数!这使得Oracle过程扩展——添加后续默认参数变得困难——必须修改调用该过程的程序!!!
- 必须利用ado的command对象调用,ADO自动将该过程返回的记录集绑定到ado返回的recordset对象上
- 使用该驱动,无需特殊设置。
- 注意:我们可能注意到有种说法,使用 "{call procename (?,{reseltset 0,io_cursor},?,....)}"的方式——应该是使用ODBC oledb的调用方式
Oracle的ODAC中oledb 驱动——对过程参数只支持位置绑定
- 该驱动不断更新
- 使用该驱动。可以使用ODBC的存储过程调用方式: "{call procename (?,?,....)}";还可以使用Oracle的调用方式:"begin procename (?,?,....) ; end;"。但为了获得返回的记录集,必须使用ODBC方式
- 支持返回多个记录集,Recordset.NextRecordset()
- 该记录集所在的形式sys_refcursor参数可以是任意位置
- 支持过程的默认参数
- 必须利用ado的command对象调用,自动将该记录集绑定到返回的ado的recordset对象上,通过recordset对象的nextrecordset访问其他记录集
- 使用该驱动,必须设置connection对象或command对象的properties("PLSQLRSet")=true
- 支持更多的Oracle特有的数据类型,具有更高的效率