Weblogs Código

RecorteX

» oracle
73 usuarios y 243 recortes de código
Usuario

Contraseña
Crear cuenta
Estás viendo los recortes de la etiqueta oracle

RSS
Recortes: 5

Etiquetas relacionadas:
plsql
ebusiness-suite
sql
índices
groupby
texto
bbdd
invalidos
concatenar
objetos
ebs

Concatenar varias filas en una columna con Oracle

Función para poder seleccionar el texto de varias filas en una única columna. Funciona como una función de grupo.
 
CREATE OR REPLACE FUNCTION rowconcat(q IN VARCHAR2) RETURN VARCHAR2 IS
  ret  VARCHAR2(4000);
  hold VARCHAR2(4000);
  cur  sys_refcursor;
BEGIN
  OPEN cur FOR q;
  LOOP
    FETCH cur INTO hold;
    EXIT WHEN cur%NOTFOUND;
    IF ret IS NULL THEN
      ret := hold;
    ELSE
      ret := ret || ',' || hold;
    END IF;
  END LOOP;
  RETURN ret;
END;
/
 
Ejemplo
 
SQL> SELECT rowconcat('SELECT dname FROM dept') AS departments
  2    FROM dual;
 
DEPARTMENTS
--------------------------------------------------------------------------------
ACCOUNTING,RESEARCH,SALES,OPERATIONS
 
Encontrado en http://orafaq.com/faq/map_rows_to_a_column

Compilar Objetos Invalidos en Oracle

Genera las sentencias necesarias para compilar los objetos inválidos en la base de datos.

select 'alter ' || decode(object_type, 'PACKAGE BODY', 'PACKAGE', object_type)
      || ' ' || owner || '.' || object_name || ' compile'
        || decode(object_type, 'PACKAGE BODY', ' body;', ';')
from dba_objects
where status='INVALID'
order by owner,
         decode(object_type, 'PACKAGE BODY', 'AAA', 'PACKAGE', 'AAB',
         substr(object_type, 1, 3)) desc,
         object_name;

Reconstruir índices en Oracle

No está claro que hacer un "rebuild" de los índices mejore el rendimiento de los mismos, especialmente ya en la 10g (que se debería gestionar automáticamente). Pero para versiones anteriores:
 
DECLARE
  CURSOR the_index IS
    SELECT index_name
    FROM   all_indexes
    WHERE  tablespace_name = '<tablespace_name>';
BEGIN
  FOR name IN the_index LOOP
	
    EXECUTE IMMEDIATE 'alter index '||name.index_name||' rebuild';
 
  END LOOP;
END;
 
Los índices se duplican antes de ser sustituidos por los recien creados. Así que ojo con el espacio en los tablespaces.

Establecer ORG_ID en PL/SQL para e-business suite de Oracle

Escribe aquí el texto
Útil cuando tienes que establecer la organización para la consulta a través de vistas en e-business suite.

 
BEGIN
    dbms_application_info.set_client_info('142');
END;
 

Otra versión para hacer lo mismo

 
DECLARE
   v_org_id NUMBER := 142;
BEGIN
   apps.FND_CLIENT_INFO.set_org_context(v_org_id);
END;
 

Fijar el juego de caracteres de una exportación/importación

Antes de invocar el comando exp o imp hay que fijar la variable de entorno NLS_LANG:
 
export NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1
 
Lógicamente hay que poner el código de nuestra elección.
Proyecto: Juanjo Navarro, 2006 - Diseño: Albin