2012-04-02 49 views
1

我是JasperReports和iReport Designer的新手。我的客户希望使用JasperReports技术来迁移/开发所有报告。注意:我没有Java体验iReport 4.5.1使用JasperServer 4.5和Oracle DB存储过程使用引用游标 - 已关闭

在过去的几天里,我通过JasperReports进行了一些挖掘和导航,这是我迄今为止的地方。

我使用iReport设计器来设计我的报告。

在我的SQL语句和过程下面,我已经编译好了,并且在Oracle SQL Developer编辑器中一切正常。

-- Table 1: Books 
CREATE TABLE BOOKS 
(
    BOOK_ID NUMBER(10) PRIMARY KEY, 
    BOOK_NAME VARCHAR2(50), 
    AUTHOR_NAME VARCHAR2(50), 
    BOOK_ISBN VARCHAR2(10), 
    PRICE NUMBER(10,2), 
    PUBLISHER_ID NUMBER(10) 
); 

-- Records for Books Table 
INSERT INTO BOOKS (BOOK_ID, BOOK_NAME, AUTHOR_NAME, BOOK_ISBN, PRICE, PUBLISHER_ID) 
    VALUES (1000000001, 'I AM NOBODY', 'PERFECTION', '1234-1234', '10.50', 5000000001); 

INSERT INTO BOOKS (BOOK_ID, BOOK_NAME, AUTHOR_NAME, BOOK_ISBN, PRICE, PUBLISHER_ID) 
    VALUES (1000000002, 'NOBODY IS PERFECT', 'PERFECTION', '1234-1234', '40.50', 5000000001); 

INSERT INTO BOOKS (BOOK_ID, BOOK_NAME, AUTHOR_NAME, BOOK_ISBN, PRICE, PUBLISHER_ID) 
    VALUES (1000000003, 'I AM PERFECT', 'PERFECTION', '1234-1234', '50.50',5000000001); 

INSERT INTO BOOKS (BOOK_ID, BOOK_NAME, AUTHOR_NAME, BOOK_ISBN, PRICE, PUBLISHER_ID) 
    VALUES (1000000004, 'NOBODY IS PERFECT', 'IM PERFECT', '1234-4321', '60.00',5000000002); 

INSERT INTO BOOKS (BOOK_ID, BOOK_NAME, AUTHOR_NAME, BOOK_ISBN, PRICE, PUBLISHER_ID) 
    VALUES (1000000005, 'PERFECTION', 'IM PERFECT', '1234-4321', '20.00',5000000002); 

INSERT INTO BOOKS (BOOK_ID, BOOK_NAME, AUTHOR_NAME, BOOK_ISBN, PRICE, PUBLISHER_ID) 
    VALUES (1000000006, 'NOBODY', 'IM PERFECT', '1234-4321', '45.50',5000000002); 

-- Table 2: Publisher 
CREATE TABLE PUBLISHER 
(
    PUBLISHER_ID NUMBER(10) PRIMARY KEY, 
    PUBLISHER_NAME VARCHAR2(50), 
    ADDRESS VARCHAR2(100), 
    STREET VARCHAR2(100), 
    CITY VARCHAR2(100), 
    STATE VARCHAR2(40), 
    COUNTRY VARCHAR2(100), 
    ZIP VARCHAR2(20) 
); 

-- Records for Publisher Table 
INSERT INTO PUBLISHER (PUBLISHER_ID, PUBLISHER_NAME, ADDRESS, STREET, CITY, STATE, COUNTRY, ZIP) 
    VALUES(5000000001, 'MG GRAW HILL', '1212', 'AVE OF THE STARTS','LOS ANGELES', 'CALIFORNIA', 'USA', '300001'); 

INSERT INTO PUBLISHER (PUBLISHER_ID, PUBLISHER_NAME, ADDRESS, STREET, CITY, STATE, COUNTRY, ZIP) 
    VALUES(5000000002, 'TATA MG GRAW HILL', '12', 'STARTS AVE','CORONA', 'CALIFORNIA', 'USA', '300010'); 

-- Alter table to make Publisher Id as foreign key in the Books table 
ALTER TABLE BOOKS ADD 
CONSTRAINT FK_BOOKS_PUBLISHER_ID 
FOREIGN KEY(PUBLISHER_ID) 
REFERENCES PUBLISHER(PUBLISHER_ID); 

-- Procedure to take publisher id as input parameter and list values from books table along with the publisher name 
CREATE OR REPLACE PROCEDURE PUBLISHER_AND_BOOKS (P_PUBLISHER_ID IN NUMBER, PUBLISHER_CUR OUT SYS_REFCURSOR) IS 
BEGIN 
    OPEN PUBLISHER_CUR FOR 
    SELECT 
     BOOK_ID,  
     BOOK_NAME, 
     AUTHOR_NAME, 
     BOOK_ISBN, 
     PRICE,   
     PUBLISHER_NAME 
    FROM 
     BOOKS, 
     PUBLISHER 
    WHERE 
     BOOKS.PUBLISHER_ID = PUBLISHER.PUBLISHER_ID 
    AND 
     PUBLISHER.PUBLISHER_ID = P_PUBLISHER_ID; 
END; 

-- Granting execution rights for the procedure 
GRANT EXECUTE ON PUBLISHER_AND_BOOKS TO PUBLIC; 

-- Description of the procedure 
DESC PUBLISHER_AND_BOOKS; 

我现在去了iReport的设计师建立一个数据库连接,并创建一个数据集来叫我的程序如下图所示

{call PUBLISHER_AND_BOOKS($P{P_PUBLISHER_ID}, $P{ORACLE_REF_CURSOR})} 

当我点击阅读字段获得字段从列表我的方法我收到以下错误消息

Error: SQL problems: Invalid column type. 

所以我通过单击确定进行手动添加字段到reprot,当我预览报告时I g没有错误信息。所以我查看了我的DataSource/DataSet,通过右键单击报表名称和查看查询它是空白的,所以我给出了上面提到的过程名称,当点击下一个时,我得到了同样的错误信息

现在我无法连接或创建一个数据集继续我的报告设计

如果任何人都可以帮助解决此问题,以便我可以继续进行报告设计,那将会非常有帮助。


1.我在报告查询设置查询语言PLSQL
2.定义光标PARAM为java.sql.ResultSet中有也试过--- NO LUCK, same error
3我已经在我的类路径符合PlSqlQueryExecuter类出口
4.我已经看过这样的:
http://rajendratambat.blogspot.in/2011/10/calling-oracle-stored-procedure-in.html?showComment=1333264003761#c6148133813463786818 --- NO LUCK, same issue

所以任何人都^ h另一个解决方案,我可以继续使用我的使用sys_refcursor的存储过程。

另外一个工作教程链接或博客将是一个很大的帮助。

在此先感谢。

Meeza

回答

相关问题