Que es un cursor y para que sirve

 

Casa en Chatou - Maurice Vlaminck

Casa en Chatou - Maurice Vlaminck

Dentro de la shared pool, cada sentencia SQL es parseada y almacenada en lo que se conoce como “area de contexto” o “cursor”. Cada cursor contiene la siguiente informacion:

  • la sentencia parseada
  • el plan de ejecucion
  • una lista de objetos referenciados

Si dos usuarios ejecutan la misma sentencia SQL, entonces utilizaran el mismo cursor. La sentencia sera reparseada si la representacion en la shared pool esta invalidada. Las representaciones se invalidan cuando, por ejemplo, se ejecuta una sentencia DDL (por ejemplo “ALTER TABLE”) sobre alguno de los objetos de la sentencia del cursor.

 

4 comentarios

  1. una duda que tengo es que tengo un procedimiento almacenado que devuelve un cursor y por mas que le haga un for llamando al procedimiento me lo parsea siempre. El mismo es abierno del forma

    open cursor for
    select *
    from tabla

    y luego busco en el v$sqlarea y para esta consulta el parse_calls = executions , me ayudaria mucho saber porque la parsea si esta en un proc almacenado

    • Hola Esteban,

      Las etapas de procesamiento de una sentencia SQL son las mismas independientemente de si la sentencia esta en un procedimiento almacenado o fuera de el.

      Espero haber respondido a tu duda.

      Un saludo,
      Fernando.

      • gracias por responder , pero a lo que me refiero es que el cursor de parsea lo mismo o sea no se comparte , pero si lo abro de la forma cursor is (select c1 from tabla) y esta dentro de un for me lo parsea una vez y lo ejecuta muchas , esto viendo las columnas executions y parse_calls de la vista v$sqlarea. No se porque cuando hago lo mismo pero con un cursor por referencia me lo parsea siempre.

  2. Hola Fer soy nuevo en Oracle y quisiera saber que es o como se define el Parseo o sentencia Parseada

    Es como una sentencia que es almacenada y la detecta o reutiliza en el shared pool?

    Gracias


RSS de los Comentarios Identificador URI de TrackBack

Deja un comentario

Fill in your details below or click an icon to log in:

Logo de WordPress.com

You are commenting using your WordPress.com account. Log Out / Cambiar )

Twitter picture

You are commenting using your Twitter account. Log Out / Cambiar )

Facebook photo

You are commenting using your Facebook account. Log Out / Cambiar )

Connecting to %s

Seguir

Get every new post delivered to your Inbox.