iReport 4.5.1 с JasperServer 4.5 с хранимыми процедурами Oracle DB с использованием курсоров ссылки - ЗАКРЫТО - PullRequest
1 голос
/ 02 апреля 2012

Я новичок в JasperReports и iReport Designer. Мой клиент хочет перенести / разработать все свои отчеты, используя технологию JasperReports. ПРИМЕЧАНИЕ: у меня нет опыта Java

За последние пару дней я немного покопался и прошел через 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.

Итак, я продолжил, нажав кнопку ОК и добавив поля вручную к репродукции, и при предварительном просмотре отчета я получил сообщение об ошибке. Поэтому я проверил свой DataSource / DataSet, щелкнув правой кнопкой мыши имя отчета и проследив, чтобы запрос был пустым, поэтому я дал имя процедуры, как упомянуто выше, а когда щелкнул далее, я получил то же сообщение об ошибке

Теперь я не могу подключиться или создать набор данных для продолжения разработки моего отчета

Будет очень полезно, если кто-нибудь сможет помочь в решении этой проблемы, чтобы я мог приступить к разработке отчета.

Примечание
1. Я установил язык запросов в запросе отчетов на plsql
2. Также попытался, определив параметр Cursor как 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

Так что у кого-нибудь может быть другое решение, в котором я могу продолжать использовать мои хранимые процедуры, использующие sys_refcursor.

Также будет полезна рабочая ссылка на учебник или блог.

Заранее спасибо.

Meeza

1 Ответ

0 голосов
/ 13 апреля 2012

После нескольких проб и ошибок и некоторых конструктивных электронных писем назад и вперед с RajendraTambat ... Я разобрался, как вызывать хранимые процедуры в конструкторе JasperReport iReport ... Все шаги подробно описаны и доступны по ссылке ниже надеюсь, это поможет ...

http://meezageekyside.blogspot.com/#!/2012/04/jasper-reports-ireport-45-using-oracle.html

...