HI,
  I use a select statement in a function; everything goes if the select statement 
doesn't contain an ORDER BY clause.
The error returned is always
Syntax error or access violation;-3014 POS(357) Invalid end of SQL statement.

If I create a Cursor using the same select Statement, it goes well.

For example the following function gives that error.

DROP FUNCTION GET_K_CITY
//
CREATE FUNCTION GET_K_CITY (NAME CHAR(50), CAP CHAR(10), PROV CHAR(10)) RETURNS NUMBER 
AS
VAR RES FIXED(6,0);
TRY
    IF CAP IS NULL AND PROV IS NULL THEN
    BEGIN
        TRY
            SELECT K_CITY INTO :RES 
            FROM PSF.CITY 
            WHERE
            CITY.N_CITY = :NAME
            AND CITY.D_END IS NULL
            ORDER BY K_CITY;
            RETURN RES;
        CATCH
            IF $RC <> 100 THEN STOP($RC, $ERRMSG)
            ELSE RETURN NULL;
        END;
CATCH
    STOP($RC, $ERRMSG);
//
GRANT EXECUTE ON PPORTAL.GET_K_CITY TO PSF
//
GRANT EXECUTE ON PPORTAL.GET_K_CITY TO PPORTAL_PERMISSION
//

Couldn't I use an ORDER BY in a select statement within a function? Only using a 
Cursor explicit definition too?

Thanks in advance.

Bye,
   Matteo

Reply via email to