Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
![]() |
![]() |
Home -> Community -> Usenet -> c.d.o.server -> can't create function-based index
Problem:
I am trying to create a function-based index but receive a permissions
error (ORA-1031).
Suggestions greatly appreciated.
Environment:
HPUX 11.0
compatible 8.1.5 query_rewrite_enabled TRUE query_rewrite_integrity enforced
This is the table description for FARM_OPERATOR, the key is on STMPNO, OPERATOR.
STMPNO NOT NULL NUMBER(8) OPERATOR NOT NULL NUMBER(1) FAMNAM NOT NULL VARCHAR2(31) POSTCOD VARCHAR2(6)
This is what I want to run. It works, but slowly. So I want to index it.
SELECT TELENO FROM FARM_OPERATOR WHERE TO_RESPROV(POSTCOD) = 10; SQL script:
CREATE OR REPLACE FUNCTION TO_RESPROV(ipostcod IN VARCHAR2) RETURN
NUMBER
DETERMINISTIC
IS
oresprov NUMBER := 0; c CHAR(1);
c := SUBSTR(ipostcod,1,1); IF (c IS NOT NULL) THEN IF (c = 'A') THEN oresprov := 10; ELSIF (c = 'C') THEN oresprov := 11; ELSIF (c = 'B') THEN oresprov := 12; ELSIF (c = 'E') THEN oresprov := 13; ELSIF (c = 'G' OR c = 'H' OR c = 'J') THEN oresprov := 24; ELSIF (c = 'K' OR c = 'L' OR c = 'M' OR c = 'N' OR c = 'P') THEN oresprov := 35; ELSIF (c = 'R') THEN oresprov := 46; ELSIF (c = 'S') THEN oresprov := 47; ELSIF (c = 'T') THEN oresprov := 48; ELSIF (c = 'V') THEN oresprov := 59; ELSIF (c = 'X') THEN oresprov := 60; ELSIF (c = 'Y') THEN oresprov := 61; ELSIF (c = 'Z') THEN oresprov := 62; END IF; END IF; RETURN (oresprov);
GRANT EXECUTE ON TO_RESPROV TO PUBLIC; CREATE INDEX IX_RESPROV ON FARM_OPERATOR (to_resprov(postcod));
Results:
Function created.
Grant succeeded.
CREATE INDEX IX_RESPROV ON FARM_OPERATOR (to_resprov(postcod))
*ERROR at line 1:
-- PGY (Paul G. Young) http://www.magma.ca/~pgyReceived on Fri Sep 22 2000 - 18:01:06 CDT
![]() |
![]() |