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;
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;