如何在TOAD中调用存储过程并将结果输出至网格
在TOAD中调用MyPackage.GetFailedTransactions并将结果输出到网格
我来帮你搞定这个需求,其实操作起来挺直观的——你的存储过程已经用REF CURSOR封装了结果集,TOAD对这类场景支持得非常好。下面给你两种可行的方法:
方法一:用SQL Worksheet写匿名PL/SQL块(最直接高效)
- 打开TOAD的SQL Worksheet(顶部菜单栏选
Database > SQL Worksheet,或者直接点工具栏的SQL图标) - 在编辑器里输入以下代码:
DECLARE -- 声明一个和存储过程OUT参数类型完全匹配的游标变量 v_failed_trans MyPackage.ct; BEGIN -- 调用目标存储过程,把查询结果赋值给游标变量 MyPackage.GetFailedTransactions(p_fails => v_failed_trans); -- 这里不需要额外代码,TOAD会自动识别这个游标变量并提供查看入口 END; /
- 点击工具栏的Execute as Script(绿色播放按钮,或按F5)执行这段代码
- 执行完成后,在TOAD下方的
Script Output面板里,你会看到执行成功的提示,同时会出现一个Cursors标签页——点击它找到v_failed_trans,再点击游标名称,结果就会以网格形式展示出来了!
方法二:用TOAD的可视化执行向导(不用写代码)
如果你偏好可视化操作,也可以用TOAD自带的工具:
- 打开TOAD的Schema Browser(
Database > Schema Browser) - 在左侧导航栏找到
Packages,定位到MyPackage并展开,找到GetFailedTransactions存储过程 - 右键点击该存储过程,选择
Execute - 在弹出的执行窗口里,TOAD会自动识别OUT参数
p_fails的类型,直接点击Execute按钮 - 执行完成后,窗口底部会直接显示游标返回的结果网格,一步到位
小补充
- 确保你的数据库连接拥有访问
MyPackage和MDC_FAILURE表的权限,否则会触发权限报错 - 如果你的TOAD版本偏旧,可能需要在匿名块里添加
DBMS_SQL.RETURN_RESULT(v_failed_trans);来强制输出游标结果,代码调整后如下:
DECLARE v_failed_trans MyPackage.ct; BEGIN MyPackage.GetFailedTransactions(p_fails => v_failed_trans); DBMS_SQL.RETURN_RESULT(v_failed_trans); END; /
执行后结果会直接出现在SQL Results面板的网格中。
内容的提问来源于stack exchange,提问作者ADH




