Puede escribir una función PL/SQL para devolver ese cursor (o podría poner esa función en un paquete si tiene más código relacionado con esto):
CREATE OR REPLACE FUNCTION get_allitems
RETURN SYS_REFCURSOR
AS
my_cursor SYS_REFCURSOR;
BEGIN
OPEN my_cursor FOR SELECT * FROM allitems;
RETURN my_cursor;
END get_allitems;
Esto devolverá el cursor.
Asegúrate de no poner tu SELECT
-Cadena entre comillas en PL/SQL cuando sea posible. Ponerlo en cadenas significa que no se puede verificar en tiempo de compilación y que debe analizarse cada vez que lo use.
Si realmente necesita usar SQL dinámico, puede poner su consulta entre comillas simples:
OPEN my_cursor FOR 'SELECT * FROM allitems';
Esta cadena debe analizarse cada vez que se llama a la función, lo que generalmente será más lento y ocultará los errores en su consulta hasta el tiempo de ejecución.
Asegúrese de usar variables de vinculación siempre que sea posible para evitar análisis difíciles:
OPEN my_cursor FOR 'SELECT * FROM allitems WHERE id = :id' USING my_id;