2012-04-02 12 views
1

Ich bin neu in JasperReports und iReport Designer. Mein Kunde möchte alle seine Berichte mithilfe der JasperReports-Technologie migrieren/entwickeln. HINWEIS: Ich habe keine Java-ErfahrungiReport 4.5.1 Mit JasperServer 4.5 mit gespeicherten Oracle-DB-Prozeduren mit Ref-Cursorn-- GESCHLOSSEN

Ich habe einige graben und navigiert meinen Weg durch JasperReports in den letzten paar Tagen und das ist, wo ich so weit bin.

Ich benutze den iReport Designer, um meine Berichte zu entwerfen.

Unten meine SQL-Anweisungen und Verfahren, kompilierte ich und alles ist gut im Oracle SQL Developer Editor.

-- 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; 

Ich ging nun den iReport Designer, um eine Datenbank-Verbindung aufgebaut und erstellt einen Datensatz mein Verfahren zu nennen, wie unten

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

gezeigt Wenn ich das Lese Feld geklickt die Liste der Felder erhalten aus mein Verfahren erhalte ich folgende Fehlermeldung

Error: SQL problems: Invalid column type. 

Also mit ich ging mit oK und die Felder von Hand in die reprot hinzufügen und wenn ich den Bericht Vorschau I g ot eine Fehlermeldung. Also habe ich meine DataSource/DataSet überprüft, indem ich mit der rechten Maustaste auf den Bericht Name und Ansicht Abfrage war leer, so gab ich den Prozedurnamen wie oben erwähnt und beim nächsten Klick bekam ich die gleiche Fehlermeldung

Jetzt kann ich nicht verbinden oder Erstellen Sie ein DataSet, um mit meinem Berichtsentwurf fortzufahren

Es wird eine große Hilfe sein, wenn jemand bei der Lösung dieses Problems helfen kann, damit ich mit dem Berichtsentwurf fortfahren kann.

HINWEIS
1. ich die Abfragesprache in der Report-Abfrage Set haben
2. Auch mit durch Definieren der Cursor param als java.sql.ResultSet versuchte PLSQL --- NO LUCK, same error
3 . ich habe
in meinem classpath PlSqlQueryExecuter Klasse Exits angepasst 4. ich habe auf diese sah:
http://rajendratambat.blogspot.in/2011/10/calling-oracle-stored-procedure-in.html?showComment=1333264003761#c6148133813463786818 --- NO LUCK, same issue

kann also jemand h ave eine andere Lösung, in der ich meine Stored Procedures weiterhin verwenden kann, die sys_refocursor verwendet.

Auch ein funktionierender Tutorial-Link oder Blog wird eine große Hilfe sein.

Vielen Dank im Voraus.

Meeza

Antwort

Verwandte Themen