finereport存储过程
‘壹’ 显示的字段值根据输入的条件变化而变化sql,存储过程,finereport
可以用动态SQL
也可以写类似的条件
AND (P_TYPE IS NULL OR P.TYPEID = P_TYPE)
AND (P_HOUSEID IS NULL OR P.HOUSEID = P_HOUSEID)
‘贰’ 使用FineReport开发报表时怎么调用非当前用户下的oracle存储过程
这个报错是因为你切换了数据库端用户,所以它找不到SCOTT这个用户名。你只要把SCOTT加上就能正常调用数据库了。当然,你还要保证当前的数据库端用户需要对SCOTT用户下的存储过程有访问权限。
‘叁’ 求助,FineReport点“查询”按钮之前调用Oracle过程
调用Oracle过程一共有两种情况,分别是不带输出参数的和带参数的,具体内容可以参照如Chinafine之类的论坛或者博客,在这里就简单地说一下这两种情况的代码内容:
不带输出参数情况(过程名称为pro1,参数个数1个,数据类型为整形数据 )
import java.sql. *
;
public class ProcereNoArgs
{
public static void main(Stringargs[]) throws Exception
{
//
加载Oracle驱动
DriverManager.registerDriver( new oracle.jdbc.driver.OracleDriver());
//
获得Oracle数据库连接
Connectionconn =
DriverManager.getConnection( " jdbc:oracle:thin:@MyDbComputerNameOrIP:1521:ORCL", sUsr, sPwd
" );
// 创建存储过程的对象
CallableStatementc = conn.divpareCall( " {callpro1(?)} " );
// 给Oracle存储过程的参数设置值,将第一个参数的值设置成188
c.setInt( 1 , 188 );
// 执行Oracle存储过程
c.execute();
conn.close();
}
}
2.带输出参数的情况(过程名称为pro2,参数个数2个,数据类型为整形数据,返回值为整形类型)
importjava.sql.*;
publicclassProcereWithArgs
{
publicstaticvoidmain(Stringargs[])throwsException
{
//加载Oracle驱动
DriverManager.registerDriver(neworacle.jdbc.driver.OracleDriver());
//获得Oracle数据库连接
Connectionconn = DriverManager.getConnection("jdbc:oracle:thin:@MyDbComputerNameOrIP:1521:ORCL", sUsr, sPwd ");
//创建Oracle存储过程的对象,调用存储过程
CallableStatementc=conn.divpareCall("{callpro2(?,?)}");
//给Oracle存储过程的参数设置值,将第一个参数的值设置成188
c.setInt(1,188);
//注册存储过程的第二个参数
c.registerOutParameter(2,java.sql.Types.INTEGER);
//执行Oracle存储过程
c.execute();
//得到存储过程的输出参数值并打印出来
System.out.println (c.getInt(2));
conn.close();
}
}
希望能够帮到题主~
‘肆’ 润乾报表怎么建一个存储过程的报表
润乾报表新建存储过程比较麻烦,具体如下:
新建空白报表
1)“配置” --“数据源”设置数据源
2)“配置”---“参数” 增加两个参数对应存储过程的输入参数,
参数名分别是 in_deptid和in_age
2)“配置”--“数据集”--“增加”--数据集类型选“存储过程” ,打开了存储过程数据集窗口
3) 定义tab填入:{call mypackage.EMP_TJ(?,?,?)};
参数tab中增加3个参数:第一个参数---参数表达式值in_deptid,其余默认
第二个参数---参数表达式值in_age,其余默认
第三个参数---参数表达式值@@result,结果类型为游标,参数模式为输出参数,其余默认;
这样就得到了数据集,假定这里数据集名是ds1,其有两列分别是in_deptid和in_age。
4)在报表单元格中就可以像使用SQL取数据集一样使用存储过程的数据集了。
现在很多朋友都用帆软finereport了,比润乾好用很多。新建存储过程,更连普通的数据连接一样,建议你试试。
‘伍’ 帆软怎么调用数据库里的存储过程
存储过程,就是直接将存储过程作为数据集,不需要在数据库查询处去调用存储过程。FineReport支持全部数据库的存储过程作为数据集并且定义方法都相同。
1、点击模板>模板数据集或者直接在数据集面板中,点击“+”
2、在数据库查询窗口中输入:
SET
NOCOUNT
ON
EXEC
dbo.jason
'${产品品号}'
其中
SET
NOCOUNT
ON
为固定格式,EXEC
dbo.jason(存储过程名称)'${产品品号}'
(产数子段),如果存储过程中带出多个字段的话,可以带出多个参数。
3、预览数据
4、报表字段设计
5、报表预览
若存储过程中返回的是多个结果集,在此也是支持同时返回多个结果集的。
‘陆’ 水晶报表可以连接oracle的存储过程吗
水晶报表可以连接oracle的存储过程,但是不是随便写一个在数据库中可以运行的存储过程就可以的。具体的步骤的话我不是特别清楚,现在很少用到水晶报表了,一般情况下用的都是finereport,这样的话就和题主稍微说下我现在用的工具的方法吧,应该是差不多的。
1、创建包
由于需要但会查询出来的数据集,需要在PL/SQL中创建一个package,这个包里面定义一个ref cursor类型,用于记录sql语句查询出来的结果集。如下图:
具体代码如下:
create or replace procere paging
(tableName in varchar2 ,--表名
pageSizes in number,--每页显示记录数
pageNow in number,--当前页
rowNums out number,--总记录数
pageNum out number,--总页数
paging_cursor out pagingPackage.paging_cursor) is
--定义部分
--定义sql语句,字符串
v_sql varchar2(1000);
--定义两个整数,用于表示每页的开始和结束记录数
v_begin number:=(pageNow-1)*pageSizes+1;
v_end number:=pageNow*pageSizes;
begin
--执行部分
v_sql:='select * from (select t1.*,rownum rn from (select * from '||tableName||') t1 where rownum<='||v_end||') where rn>='||v_begin;
--把游标和sql语句关联
open paging_cursor for v_sql;
--计算rowNums和pageNum
--组织一个sql语句
v_sql:='select count(*) from '||tableName;
--执行该sql语句,并赋给rowNums
execute immediate v_sql into rowNums;
--计算pageNum
if mod(rowNums,pageSizes)=0 then
pageNum := rowNums/pageSizes;
else
pageNum := rowNums/pageSizes+1;
end if;
end;
‘柒’ 求助,FineReport 如何调用存储过程参数
以oracle为例,建一个模板数据集。
1、点击模板>模板数据集,点击“+”,如下图:
‘捌’ iReport 能执行存储过程吗
楼主一直使用的是finereport报表软件,没有使用过ireport,但存储功能的执行是一个基本功能,两者之间应该没有太大的差别,以下的步骤题主可以参考下:存储过程,就是直接将存储过程作为数据集,不需要在数据库查询处去调用存储过程。第一步:定义数据集,点击模板>模板数据集或者直接在数据集面板中,点击加号键。切换到oracle数据库所在的数据连接,双击所需要添加的存储过程。注意:由于其是模板数据集处,因此该存储过程会存在模板数据集中,如果是在服务器数据集处定义的,则就会显示在服务器数据集所在的tab中。若存储过程中返回的是多个结果集,在此也是支持同时返回多个结果集;点击预览可以看到多个结果集,数据集可以同时查看多个结果集。
以上就是报表软件通用的存储过程的执行步骤,题主有机会可以尝试使用下finereport报表软件,个人觉得这款软件真心不错,对于复杂报表的处理尤其优化简洁~
‘玖’ vb中的数据报表要显示数据库中的存储过程中的信息,但是只显示了一条是什么原因
vb的数据报表没使用过,但是楼主可以去试试一些主流的java报表工具,我记得Finereport就是支持直接读取存储过程出报表的,没事的话,可以试一下
‘拾’ fastreport的dataset是存储过程怎么设计
我用的一直是FineReport,不过我觉得在存储过程上应该是类似的。下面是以oracle为例的,但原理是相同的。此外,fastreport应该有自己的demo的,你可以去找找。
点击模板>模板数据集或者直接在数据集面板中,点击如下图:
注:多个结果集只执行一次储存过程