Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
![]() |
![]() |
Home -> Community -> Usenet -> c.d.o.server -> Re: PL/SQL: ORA-00920: invalid relational operator" Error
DotNetDoctor wrote:
> PL/SQL: ORA-00920: invalid relational operator" Error --- :confused:
>
> Please Tell me if you can resolve this "PL/SQL: ORA-00920: invalid
> relational operator" Error in the :- code :-
>
> DECLARE
>
> BSSS_HighPr VARCHAR2(11);
>
> BSSS_LowPr VARCHAR2(11);
>
> IF ACCOUNT_ROW.tax2_id IN
> (999999999,888888888,777777777,666666666,555555555,444444444,333333333,222222222,111111111)
>
> AND
>
> ACCOUNT_ROW.tax1_id IS NULL
>
> AND
>
> ACCOUNT_ROW.tax2_id IS NOT NULL
>
> THEN Tax_Id_where_clause := 'A.TAX_ID = ' || ACCOUNT_ROW.tax2_id;
>
> SELECT MAX(to_number(TRD_PR)),MIN(to_number(TRD_PR)) INTO
> BSSS_HighPr,BSSS_LowPr
>
> FROM BS_TRADE
>
> WHERE Tax_Id_where_clause /* ---- gETTING ERROR here ---- */
>
> GROUP BY TRD_PR,TRD_DT;
>
>
>
> PLEASE reply :confused: :confused:
>
>
> --
> DotNetDoctorMessage posted via http://www.exforsys.com for all your training needs.
Your 'problem' arises from attempting to make a dynamic WHERE clause when not using dynamic SQL. Tax_Id_where_clause is a variable. Period. To make it part of your SELECT statement you will need to use dynamic SQL:
...
sqlStmt := 'SELECT MAX(to_number(TRD_PR)),MIN(to_number(TRD_PR)) FROM
BS_TRADE WHERE '||Tax_Id_where_clause|| ' GROUP BY TRD_PR, TRD_DT';
execute immediate sqlStmt INTO BSSS_HighPr, BSSS_LowPr; ...
The above code should work as intended, and should provide some insight into how such actions are to be written.
David Fitzjarrell Received on Thu Nov 03 2005 - 16:27:35 CST
![]() |
![]() |