Skip to Main Content

SQL & PL/SQL

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

virtual column not allowed here ORA-06550

602365Jan 11 2008 — edited Jan 11 2008
I am having this error (ORA-06550: line 143, column 128: PL/SQL: ORA-01733: virtual column not allowed here ORA-06550: line 142, column 1: PL/SQL: SQL Statement ignored) with the following code and can't see what is wrong.


DECLARE
QNStart DATE;
QNFinish DATE;
Q1Start DATE;
Q1Finish DATE;
Q2Start DATE;
Q2Finish DATE;
Q3Start DATE;
Q3Finish DATE;
Q4Start DATE;
Q4Finish DATE;
Q5Start DATE;
Q5Finish DATE;
QNT NUMBER;
Q1T NUMBER;
Q2T NUMBER;
Q3T NUMBER;
Q4T NUMBER;
QNR NUMBER;
Q1R NUMBER;
Q2R NUMBER;
Q3R NUMBER;
Q4R NUMBER;
c_date DATE;
c NUMBER;
BEGIN

select current_date INTO c_date from DUAL;

IF c_date between to_date('01-JAN', 'DD-Mon') AND to_date('31-MAR', 'DD-Mon') then
QNStart := to_date('01-JAN', 'DD-Mon');
QNFinish := to_date('31-MAR', 'DD-Mon');

ELSIF c_date between to_date('01-APR', 'DD-Mon') AND to_date('30-JUN', 'DD-Mon') then
QNStart := to_date('01-APR', 'DD-Mon');
QNFinish := to_date('30-JUN', 'DD-Mon');

ELSIF c_date between to_date('01-JUL', 'DD-Mon') AND to_date('30-SEP', 'DD-Mon') then
QNStart := to_date('01-JUL', 'DD-Mon');
QNFinish := to_date('30-SEP', 'DD-Mon');

ELSIF c_date between to_date('01-OCT', 'DD-Mon') AND to_date('31-DEC', 'DD-Mon') then
QNStart := to_date('01-OCT', 'DD-Mon');
QNFinish := to_date('31-DEC', 'DD-Mon');

END IF;

Q1Start := ADD_MONTHS(QNStart,-3);
Q1Finish := ADD_MONTHS(QNFinish,-3);
Q2Start := ADD_MONTHS(QNStart,-6);
Q2Finish := ADD_MONTHS(QNFinish,-6);
Q3Start := ADD_MONTHS(QNStart,-9);
Q3Finish := ADD_MONTHS(QNFinish,-9);
Q4Start := ADD_MONTHS(QNStart,-12);
Q4Finish := ADD_MONTHS(QNFinish,-12);
Q5Start := ADD_MONTHS(QNStart,-15);
Q5Finish := ADD_MONTHS(QNFinish,-15);

select COUNT(COUNT(*)) INTO Q1T from FF_ACTIONS f, FF_ACTION_TYPE_LOV a
WHERE f.DATE_ENTERED BETWEEN Q1Start AND Q1Finish
AND a.ACTION_SCORE = 'Y'
AND f.INPUT_TYPE = a.ACTION_NAME
GROUP BY f.COMPANY_NAME;

select COUNT(COUNT(*)) INTO Q2T from FF_ACTIONS f, FF_ACTION_TYPE_LOV a
WHERE f.DATE_ENTERED BETWEEN Q2Start AND Q2Finish
AND a.ACTION_SCORE = 'Y'
AND f.INPUT_TYPE = a.ACTION_NAME
GROUP BY f.COMPANY_NAME;

select COUNT(COUNT(*)) INTO Q3T from FF_ACTIONS f, FF_ACTION_TYPE_LOV a
WHERE f.DATE_ENTERED BETWEEN Q3Start AND Q3Finish
AND a.ACTION_SCORE = 'Y'
AND f.INPUT_TYPE = a.ACTION_NAME
GROUP BY f.COMPANY_NAME;

select COUNT(COUNT(*)) INTO Q4T from FF_ACTIONS f, FF_ACTION_TYPE_LOV a
WHERE f.DATE_ENTERED BETWEEN Q4Start AND Q4Finish
AND a.ACTION_SCORE = 'Y'
AND f.INPUT_TYPE = a.ACTION_NAME
GROUP BY f.COMPANY_NAME;

select COUNT(COUNT(*)) INTO QNT from FF_ACTIONS f, FF_ACTION_TYPE_LOV a
WHERE f.DATE_ENTERED BETWEEN QNStart AND QNFinish
AND a.ACTION_SCORE = 'Y'
AND f.INPUT_TYPE = a.ACTION_NAME
GROUP BY f.COMPANY_NAME;

select COUNT(COUNT(*)) INTO Q1R from FF_ACTIONS a
WHERE a.DATE_ENTERED BETWEEN Q1Start AND Q1Finish
AND a.COMPANY_NAME IN
(select f.COMPANY_NAME from FF_ACTIONS f, FF_ACTION_TYPE_LOV a
WHERE f.DATE_ENTERED BETWEEN Q2Start AND Q2Finish
AND a.ACTION_SCORE = 'Y'
AND f.INPUT_TYPE = a.ACTION_NAME
GROUP BY f.COMPANY_NAME)
GROUP BY a.COMPANY_NAME;

select COUNT(COUNT(*)) INTO Q2R from FF_ACTIONS a
WHERE a.DATE_ENTERED BETWEEN Q2Start AND Q2Finish
AND a.COMPANY_NAME IN
(select f.COMPANY_NAME from FF_ACTIONS f, FF_ACTION_TYPE_LOV a
WHERE f.DATE_ENTERED BETWEEN Q3Start AND Q3Finish
AND a.ACTION_SCORE = 'Y'
AND f.INPUT_TYPE = a.ACTION_NAME
GROUP BY f.COMPANY_NAME)
GROUP BY a.COMPANY_NAME;

select COUNT(COUNT(*)) INTO Q3R from FF_ACTIONS a
WHERE a.DATE_ENTERED BETWEEN Q3Start AND Q3Finish
AND a.COMPANY_NAME IN
(select f.COMPANY_NAME from FF_ACTIONS f, FF_ACTION_TYPE_LOV a
WHERE f.DATE_ENTERED BETWEEN Q4Start AND Q4Finish
AND a.ACTION_SCORE = 'Y'
AND f.INPUT_TYPE = a.ACTION_NAME
GROUP BY f.COMPANY_NAME)
GROUP BY a.COMPANY_NAME;

select COUNT(COUNT(*)) INTO Q4R from FF_ACTIONS a
WHERE a.DATE_ENTERED BETWEEN Q4Start AND Q4Finish
AND a.COMPANY_NAME IN
(select f.COMPANY_NAME from FF_ACTIONS f, FF_ACTION_TYPE_LOV a
WHERE f.DATE_ENTERED BETWEEN Q5Start AND Q5Finish
AND a.ACTION_SCORE = 'Y'
AND f.INPUT_TYPE = a.ACTION_NAME
GROUP BY f.COMPANY_NAME)
GROUP BY a.COMPANY_NAME;

select COUNT(COUNT(*)) INTO QNR from FF_ACTIONS a
WHERE a.DATE_ENTERED BETWEEN QNStart AND QNFinish
AND a.COMPANY_NAME IN
(select f.COMPANY_NAME from FF_ACTIONS f, FF_ACTION_TYPE_LOV a
WHERE f.DATE_ENTERED BETWEEN Q1Start AND Q1Finish
AND a.ACTION_SCORE = 'Y'
AND f.INPUT_TYPE = a.ACTION_NAME
GROUP BY f.COMPANY_NAME)
GROUP BY a.COMPANY_NAME;

select COUNT(LOGINID) INTO c from FF_Quarter_Report WHERE LOGINID = :APP_USER;

IF (c > 0) THEN
UPDATE FF_Quarter_Report
SET Q4Total = Q4T, Q4Re = Q4R, Q3Total = Q3T, Q3Re = Q3R, Q2Total = Q2T, Q2Re = Q2R, Q1Total = Q1T, Q1Re = Q1R, QNTotal = QNT, QNR = QNR
WHERE LOGINID = :APP_USER;

ELSE
INSERT INTO FF_Quarter_Report
VALUES (:APP_USER, Q4T, Q4R, Q3T, Q3R, Q2T, Q2R, Q1T, Q1R, QNT, QNR);

END IF;

END;

here is what the table looks like

FF_Quarter_Report

LOGINID VARCHAR2
Q4Total NUMBER,
Q4Re NUMBER,
Q3Total NUMBER,
Q3Re NUMBER,
Q2Total NUMBER,
Q2Re NUMBER,
Q1Total NUMBER,
Q1Re NUMBER,
QNTotal NUMBER,
QNRe NUMBER

Anyone know why?

Cheers

s
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Feb 8 2008
Added on Jan 11 2008
10 comments
601 views