Hi all,
 
I'm writing a package to manipulate a partitioned table for the duhvelopers and have run into
a weird query that I can't figure out.  I can convert a substring to a number in a select clause,
but as soon as I try to use that same number in the where clause, the thing chokes.  Has
anyone else seen anything like this?
 
I'm on 9.0.1.3, Solaris 8.  The buy_price_pkg.cnv_bpt_to_bp_id in the query is a custom
function that returns a number corresponding with which partition is current, old, next,
etc.
 
 
SQL> SELECT to_number(substr(partition_name,5,2)), buy_price_pkg.cnv_bpt_to_bp_id(5)
  2  FROM   all_tab_partitions
  3  WHERE  table_name = 'BUY_PRICE_PIECE_TYPE_HISTORY'
  4*        and partition_name != 'TYPE01'
SQL> /
 
TO_NUMBER(SUBSTR(PARTITION_NAME,5,2)) BUY_PRICE_PKG.CNV_BPT_TO_BP_ID(5)
------------------------------------- ---------------------------------
                                    9                                 9
                                   10                                 9
                                   11                                 9
                                   12                                 9
 
SQL> SELECT to_number(substr(partition_name,5,2)), buy_price_pkg.cnv_bpt_to_bp_id(5)
  2  FROM   all_tab_partitions
  3  WHERE  table_name = 'BUY_PRICE_PIECE_TYPE_HISTORY'
  4         and partition_name != 'TYPE01'
  5*       and to_number(substr(partition_name,5,2)) = buy_price_pkg.cnv_bpt_to_bp_id(5)
SQL> /
      and to_number(substr(partition_name,5,2)) = buy_price_pkg.cnv_bpt_to_bp_id(5)
                    *
ERROR at line 5:
ORA-01722: invalid number
TIA,

John P Weatherman
Database Administrator
Replacements Ltd.

Reply via email to