Re: Execute Immediate Not Working With WHERE CURRENT OF

From: Gerard H. Pille <ghp_at_skynet.be>
Date: Fri, 23 Dec 2005 04:01:03 +0200
Message-ID: <43AB5A5F.5000408_at_skynet.be>


rhythmram_at_gmail.com wrote:
> Hi Gurus,
> Question regarding execute immediate. Following code is not working
> CREATE OR REPLACE FUNCTION Udf_Test (
> strTech IN VARCHAR2
> )
> RETURN PLS_INTEGER
> IS
> -- VARIABLES TO STORE INPUT PARAMETERS
> in_DID VARCHAR2 (18 BYTE);
> -- LOCAL VARIABLES
> intRowCount PLS_INTEGER;
> intErrorCount PLS_INTEGER;
> strUNID VARCHAR2 (24);
> strTableName VARCHAR (20);
>
> CURSOR c1 IS
> SELECT SUBSEC
> FROM TESTTABLE
> FOR UPDATE OF SUBSEC;
>
> BEGIN
> -- ASSIGNING INPUT PARAMETES TO THE LOCAL VARIABLES
> in_DID := UPPER (strTech);
> strTableName := 'TESTTABLE';
>
>
> -- LOCAL VARIABLE INITIALIZATION
> intRowCount := 0;
> intErrorCount := 0;
>
> FOR c1_rec IN c1 LOOP
> EXECUTE IMMEDIATE ' UPDATE TESTTABLE SET SUBSEC = ' || strTech || '
> WHERE CURRENT OF c1';
> END LOOP;
>
> RETURN intErrorCount;
> EXCEPTION
> WHEN OTHERS
> THEN
> ROLLBACK;
> intErrorCount := intErrorCount + 1;
>
> DBMS_OUTPUT.PUT_LINE (DBMS_UTILITY.FORMAT_ERROR_STACK);
> DBMS_OUTPUT.PUT_LINE (DBMS_UTILITY.FORMAT_CALL_STACK);
>
> RETURN intErrorCount;
> END;
>
> getting error at "EXECUTE IMMEDIATE ' UPDATE TESTTABLE SET SUBSEC = '
> || strTech || ' WHERE CURRENT OF c1';"
>
> ORA-03001: unimplemented feature
>
> any idea gurus
>

Never ask a guru for an idea, rhythmram, they might get carried away.

In your case, you could try to select the rowid from the "testtable", and use that in the where-clause of the update.

Succes,

Gerard Received on Fri Dec 23 2005 - 03:01:03 CET

Original text of this message