谁能帮我写个简单的存储过程,返回参数中“包含”记录集

KissApple 2011-07-18 11:36:05
程序中需要调用这样一个存储过程,如果返回的都是varchar之类的很简单,执行成功了,现在有的存储过程中返回的包含varchar和记录集名称,我想测试下程序对不对,能不能帮我写个简单的我来测试下,谢谢了

存储过程名称:GetAInfo
输入参数:
序号 字段名称 数据类型 字段说明 备注
1 inID VARCHAR

返回参数:
序号 字段名称 数据类型 字段说明 备注
1 AppCode VARCHAR 操作是否出错:1=成功;0=失败
2 ErrorMsg VARCHAR 操作出错提示信息
3 outRecCur Cursor 返回记录集名称

返回记录集字段定义:
序号 字段名称 数据类型 字段说明 备注
1 outID VARCHAR
2 outName VARCHAR
3 outRID VARCHAR
4 outRType VARCHAR
5 outRCount VARCHAR
...全文
104 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
KissApple 2011-07-19
  • 打赏
  • 举报
回复
明白了,谢谢
BenChiM888 2011-07-18
  • 打赏
  • 举报
回复

create table t_test(
outID VARCHAR2(20),
outName VARCHAR2(20),
outRID VARCHAR2(20),
outRType VARCHAR2(20),
outRCount VARCHAR2(20)
);

insert into t_test values(......);
....

create or replace procedure procedure_name(
inID in VARCHAR2,
AppCode out VARCHAR2,
ErrorMsg out VARCHAR2,
outRecCur out SYS_REFCURSOR --不要用cursor
)as
begin
open outRecCur for
select * from t_test;

AppCode := 1;
exception
when others then
AppCode := 0;
ErrorMsg := SQLERRM;
end;
BenChiM888 2011-07-18
  • 打赏
  • 举报
回复

--cursor 的语法是 cursor cursor_name is SQL语句
--自定义游标大致可以分为两种,一种是 cursor cursor_name is SQL语句
---这种的作用是循环处理数据的,不用于将数据结果集返回
---另外一种就是我写的 游标变量的形式(SYS_REFCURSOR)这种写法是返回结果集用的

--如果你就想用普通cursor的话,按照你的描述,必须定义一个记录类型数组,然后将结果插入数组中
--再将这个记录类型数组返回(需要借助于包)
create table t_test(
outID VARCHAR2(20),
outName VARCHAR2(20),
outRID VARCHAR2(20),
outRType VARCHAR2(20),
outRCount VARCHAR2(20))

--包头声明
create or replace package my_pakage as
--记录型变量
type my_record is record(
outID VARCHAR2(20),
outName VARCHAR2(20),
outRID VARCHAR2(20),
outRType VARCHAR2(20),
outRCount VARCHAR2(20));
--记录型数组
type my_varray is table of my_record index by binary_integer;、
--存储过程声明
procedure procedure_name(
inID in VARCHAR2,
AppCode out VARCHAR2,
ErrorMsg out VARCHAR2,
outRecCur out my_varray --这里就是记录型数组类型
);
end my_pakage;

--声明包体
create or replace package body my_pakage as
--实现存储过程的声明
procedure procedure_name(
inID in VARCHAR2,
AppCode out VARCHAR2,
ErrorMsg out VARCHAR2,
outRecCur out my_varray
)
as
begin
select * bulk collect
into outRecCur
from t_test;
exception
when others then
AppCode := 0;
ErrorMsg := SQLERRM;
end;

end;
/

KissApple 2011-07-18
  • 打赏
  • 举报
回复
请教下,为什么不要用cursor?事实上我建存储过程时如果写cursor,pl/sql是报错的,只能写
SYS_REFCURSOR ,但我要测试的那个存储过程文档是写的cursor
内容概要:本文详细介绍如何通过搭建ELK(Elasticsearch、Logstash、Filebeat、Kibana)日志分析系统,实现对大模型Token转服务的全链路可观测性管理。系统能够实时追踪每次API调用的性能指标(如首包耗时、总耗时)、Token消耗、费用核算、用户行为及异常请求,解决自建转服务长期存在的“黑盒”问题,包括费用不清、性能瓶颈难定位、恶意刷量难识别等痛点。文章提供完整的日志结构设计、ELK组件配置方案(可直接复制部署)以及Kibana五大核心可视化看板,覆盖从数据采集、清洗、存储到展示的全流程,适用于个人、团队或企业级AI网关场景。; 适合人群:具备一定运维与开发能力的技术人员,如AI台工程师、DevOps、私有化部署开发者及企业AI基础设施负责人,尤其适合运营Token代理、模型转服务的团队; 使用场景及目标:① 实现API调用的精准费用分摊与成本控制;② 定位性能瓶颈与慢请求根源;③ 识别恶意刷量与异常调用行为;④ 构建可审计、可告警、可复盘的生产级可观测体系; 阅读建议:此资源强调结构化日志输出与业务字段定义的重要性,建议读者结合自身转服务架构,严格按照JSON日志模板实施,并完整配置ELK链路以发挥最大效能,同时关注文避坑指南以保障系统稳定运行。

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧