Home » SQL & PL/SQL » SQL & PL/SQL » Compilation Error in PLSQL
Compilation Error in PLSQL [message #214264] |
Mon, 15 January 2007 10:42 |
prashant_pathak
Messages: 263 Registered: February 2006 Location: California,US
|
Senior Member |
|
|
Hi All,
Please find the strange query situation in PLSQL.
If i run the query without PLSQL block (i.e. declar begin end) it runs well and insert data in table
but if i put the same query in PLSQL block it gives compilation error. Following is the spool
SQL> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle8i Enterprise Edition Release 8.1.7.4.0 - Production
PL/SQL Release 8.1.7.4.0 - Production
CORE 8.1.7.0.0 Production
TNS for IBM/AIX RISC System/6000: Version 8.1.7.4.0 - Production
NLSRTL Version 3.4.1.0.0 - Production
SQL> insert into smcbom_load_hours_temp
2 select data_set_name,deptclass,dept,smcbom_flex_budget.get_period(v_date) v_period,sum(v_hr),-1,sysdate,-1,sysdate
3 from (
4 select plan_level,sp.data_set_name,
5 sp.value1,smcbom_flex_budget.calculate_period_days(sp.period1),inweight ,
6 usagerate ,operationseq,percent,
7 sbov.group_id,sp.alloy,sp.planner_code,
8 sbov.days,sbov.totaloffsetdays,deptclass,dept,
9 decode(plan_level,1,(sp.value14/smcbom_flex_budget.calculate_period_days(sp.period14)) * (percent/100) * inweight * usagerate *
10 (SELECT MAX(INWEIGHT)
11 FROM SMCBOM_BOM_OPERATION_VIEW
12 WHERE ALLOY=sbov.alloy
13 AND PLANNER_CODE=sbov.planner_code
14 AND PLAN_LEVEL = 0
15 AND GROUP_ID = sbov.group_id ),
16 0,(sp.value14/smcbom_flex_budget.calculate_period_days(sp.period14)) * (percent/100) * inweight * usagerate ,
17 1) v_hr,
18 smcbom_flex_budget.get_start_date(sp.period14)+sbov.totaloffsetdays v_date,
19 sum(-sbov.totaloffsetdays)
20 over (partition by sp.alloy,sp.planner_code,sbov.group_id
21 order by plan_level asc,operationseq desc) new_offset
22 from smcbom_bom_operation_view sbov,smcbom_sales_prod_forecasts sp
23 where sbov.alloy= sp.alloy
24 and sbov.planner_code=sp.planner_code
25 and group_id=521136
26 )
27 group by data_set_name,deptclass,dept,smcbom_flex_budget.get_period(v_date);
23 rows created.
SQL> commit;
Commit complete.
SQL> declare
2 begin
3 insert into smcbom_load_hours_temp
4 select data_set_name,deptclass,dept,smcbom_flex_budget.get_period(v_date) v_period,sum(v_hr),-1,sysdate,-1,sysdate
5 from (
6 select plan_level,sp.data_set_name,
7 sp.value1,smcbom_flex_budget.calculate_period_days(sp.period1),inweight ,
8 usagerate ,operationseq,percent,
9 sbov.group_id,sp.alloy,sp.planner_code,
10 sbov.days,sbov.totaloffsetdays,deptclass,dept,
11 decode(plan_level,1,(sp.value14/smcbom_flex_budget.calculate_period_days(sp.period14)) * (percent/100) * inweight * usagerate *
12 (SELECT MAX(INWEIGHT)
13 FROM SMCBOM_BOM_OPERATION_VIEW
14 WHERE ALLOY=sbov.alloy
15 AND PLANNER_CODE=sbov.planner_code
16 AND PLAN_LEVEL = 0
17 AND GROUP_ID = sbov.group_id ),
18 0,(sp.value14/smcbom_flex_budget.calculate_period_days(sp.period14)) * (percent/100) * inweight * usagerate ,
19 1) v_hr,
20 smcbom_flex_budget.get_start_date(sp.period14)+sbov.totaloffsetdays v_date,
21 sum(-sbov.totaloffsetdays)
22 over (partition by sp.alloy,sp.planner_code,sbov.group_id
23 order by plan_level asc,operationseq desc) new_offset
24 from smcbom_bom_operation_view sbov,smcbom_sales_prod_forecasts sp
25 where sbov.alloy= sp.alloy
26 and sbov.planner_code=sp.planner_code
27 and group_id=521136
28 )
29 group by data_set_name,deptclass,dept,smcbom_flex_budget.get_period(v_date);
30 end;
31 /
(SELECT MAX(INWEIGHT)
*
ERROR at line 12:
ORA-06550: line 12, column 2:
PLS-00103: Encountered the symbol "SELECT" when expecting one of the following:
( - + mod not null others <an identifier>
avg
count current exists max min prior sql stddev sum variance
execute forall time timestamp interval date
ORA-06550: line 22, column 6:
PLS-00103: Encountered the symbol "(" when expecting one of the following:
, from
SQL> spool off;
Any idea/suggestion what is wrong
Thanks in advance
|
|
|
|
|
|
|
|
Re: Compilation Error in PLSQL [message #214382 is a reply to message #214282] |
Tue, 16 January 2007 03:12 |
JRowbottom
Messages: 5933 Registered: June 2006 Location: Sunny North Yorkshire, ho...
|
Senior Member |
|
|
Assuming that it is the analytic function in the SQL that is causing the problem, then you'll be fine on 9iR2
What you can do as a workaround is to create a view which contains the SELECT statement you're trying to use. You will be able to access this view from within Pl/Sql, even though it contains SQL syntax that you can't use directly from Pl/Sql.
|
|
|
Goto Forum:
Current Time: Mon Dec 02 08:05:55 CST 2024
|