lunes, 2 de febrero de 2009

ORACLE. Cursor variables

Las variables implicitas dentro de un cursor son:

  1. cursor%ISOPEN -> True/False. Devuelve si el cursor está abierto, es decir, después de ejecutar open, y al contrario, es decir, después de ejecutar close.
  2. cursor%FOUND ->True/False. Después de ejecutar fetch, devuelve si el cursor contiene datos. Si se alcanza más allá del último registro después de fetch, la variable devuelve FALSE.
  3. cursor%NOTFOUND ->True/False. Contrario del FOUND.
  4. cursor%ROWCOUNT -> Número. Número de registros afectados en la selección. Después de open, equivale al número total, pero el número decrece después de cada fetch.
Hay que tener en cuenta que FOUND, NOTFOUND y ROWCOUNT no se pueden utilizar antes de abrir el cursor con open, ya que darían una excepción.

Suerte en el mundo Oracle!!!

domingo, 1 de febrero de 2009

ORACLE. Obtener plan de ejecución

Para poder obtener el plan de ejecución podemos utilizar básicamente 2 métodos:

  1. Si queremos obtener el plan pero no guardarlo, ejecutar SET AUTOTRACE ON EXPLAIN antes de ejecutar el SQL que queremos analizar. Una vez finalizado ejecutar SET AUTOTRACE OFF. Para poder obtener utilizar este comando, primero ejecutar $ORACLE_HOME/sqlplus/admin/plustrce.sql y dar el permiso plustrace al usuario ("grant plustrace to ;")
  2. Si queremos guardarlo utilizar EXPLAIN PLAN SET STATEMENT_ID='MI CODIGO' INTO PLAN_TABLE FOR y después ejecutar "SELECT OPERATION, OPTIONS, OBJECT_NAME FROM PLAN_TABLE WHERE STATEMENT_ID='MI CODIGO'. La tabla utilizada es la que definida por defecto pero podemos definir una propia nuestra.

Suerte en el mundo Oracle!!!!