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,OPERATIONSEncontrado en http://orafaq.com/faq/map_rows_to_a_column
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;
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.
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;
export NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1Lógicamente hay que poner el código de nuestra elección.