集智数据平台里报表如何调用oracle数据库存储过程

本文介绍了存储过程的概念及其在数据库中的应用,特别是Oracle数据库中如何通过存储过程返回结果集,并探讨了存储过程的输入参数与输出参数的区别及优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据集的数据来自存储过程。sql语句执行的时候要先编译,然后执行。存储过程就是编译好了的一些sql语句。应用程序需要用的时候直接调用就可以了,所以效率比较高。存储过程可以用流控制语句编写,有很强的灵活性,可以完成复杂的判断和复杂的运算。存储过程可以返回结果集,可以返回参数,也可以同时返回结果集和参数。

 

 

 

存储过程的参数分为输入参数和输出参数两种。输入参数是存储过程执行的条件参数。输出参数类似于返回值,但是输出参数具有两个重要的优势:可以使用输出参数从存储过程传递出VarChar,Int,Money或任何其他数据类型的值,而返回值则只能返回整数。输出参数的另一个优势就是在一个存储过程中可以有多个输出参数,一个存储过程可以包含1024个参数(其中包括输入和输出参数),但是只能包含一个返回值。

 

 

 

不论是程序开发者调用存储过程,还是利用集智数据平台报表系统,在调用过程中,其中以Oracle的存储过程较为特殊,因为oracle数据库对于存储过程的输出参数有一定要求,需要设置为游标类型,下面就举个例子:

 

存储过程写法:

 

CREATE OR REPLACE PACKAGE TYPES AS
   TYPE RQ_REF_CURSOR IS REF CURSOR;
   — procedure getData( V_TEMP OUT TYPES.RQ_REF_CURSOR);
END;

 


CREATE OR REPLACE PROCEDURE RQ_TEST_CUR
(
 V_TEMP OUT TYPES.RQ_REF_CURSOR,
 PID IN VARCHAR
)
AS
BEGIN
 OPEN V_TEMP FOR SELECT NAME FROM TEST WHERE ID = PID;
END RQ_TEST_CUR;

 


– Create table
create table TEST
(
  ID   VARCHAR2(10) not null,
  NAME VARCHAR2(10)
)
tablespace USERS
  pctfree 10
  initrans 1
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );
– Create/Recreate primary, unique and foreign key constraints
alter table TEST
  add constraint TEST_PK unique (ID)
  using index
  tablespace USERS
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );

 

在报表中数据集的设置:

 

 

数据集中参数的设置:

报表参数的设置:


 

报表模版设计:

 


 

需要注意的是,当在单元格中用call函数调用存储过程时,执行存储过程,返回结果数据集合,只能返回单列数据,如果存储过程返回多个字段,则返回第一个字段的结果值。

 

 

 

更多了解各种复杂问题的处理,可以参考:数据获取从多个不同的业务系统中抽取和采集数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值