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> /
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
------------------------------------- ---------------------------------
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
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.