hi
------------cursor example plsql
declare lov_var boolean; a_block VARCHAR2(10); alrt_var number; temp number ; cursor c1 is Select a.vc_customer_name, b.dt_effective_date, b.nu_cust_rate from mst_customer a, mst_cust_product b where a.vc_comp_Code = :global.vc_comp_code and a.vc_comp_code = b.vc_comp_Code and a.nu_customer_code = b.nu_customer_code and b.vc_product_code = :stn_product.vc_product_code; begin open c1; go_block('blk_cust'); first_record; Loop fetch c1 into :blk_cust.vc_customer_name,:blk_cust.dt_effective, :blk_cust.nu_cust_rate; exit when c1%notfound; next_record;
End loop; previous_record; close c1; go_item('temp.BTN_OK'); end ;
--------------------------------
for more information
copy and paste click on this link and download the files
free download oracle dba paper oracle study material, erp software documents
books for oracle SQL, PL/SQL, Forms & Reports developers , visual basic, java
knowledge sharing approach
--- On Wed, 4/22/09, Jorge Armas Moreno <jorarmasm@...> wrote:
From: Jorge Armas Moreno <jorarmasm@...> Subject: Re: [Oracle] Consultas Varias sobre PL/Sql To: AdminBDOracle@yahoogroups.com Date: Wednesday, April 22, 2009, 5:17 AM
|
Gracias Byron, aca copio la solucion que encontre
CREATE OR REPLACE PROCEDURE BORRA_ESQUEMA IS BEGIN DECLARE CURSOR c1 IS select OBJECT_NAME, OBJECT_TYPE from dba_objects where OWNER='ADMSIC' ORDER BY OBJECT_ID; BEGIN FOR r1 IN c1 LOOP BEGIN EXECUTE IMMEDIATE 'DROP '||r1.OBJECT_ TYPE||' admsic.'||r1. OBJECT_NAME;
EXCEPTION WHEN NO_DATA_FOUND THEN NULL; WHEN OTHERS THEN NULL; END; END LOOP; END;
END BORRA_ESQUEMA;
Atte
Jorge
--- El sáb 18-abr-09, Jorge Armas Moreno <jorarmasm@yahoo. com> escribió:
De: Jorge Armas Moreno <jorarmasm@yahoo. com> Asunto: Re: [Oracle] Consultas Varias sobre PL/Sql A: AdminBDOracle@ yahoogroups. com Fecha: sábado, 18 abril, 2009, 5:07 pm
|
Gracias Byron por tu respuesta,
Respecto a la (1), lo que pasa es que paso los esquemas de desarrollo a calidad y tengo los privilegios sobre el esquema pero no tengo el de "drop user", bajo el dump de desarrollo y lo subo a la otra base de datos(calidad) , para lo cual primero elimino todos los objetos pero es tedioso tipo por tipo y uno por uno, existe alguna vista que me permita realizar dicha limpieza
Atte
Jorge
--- El sáb 11-abr-09, Byron Michael Motta Bonilla <amfodd@gmail. com> escribió:
De: Byron Michael Motta Bonilla <amfodd@gmail. com> Asunto: Re: [Oracle] Consultas Varias sobre PL/Sql A: AdminBDOracle@ yahoogroups. com Fecha: sábado, 11 abril, 2009, 6:24 pm
Hola amigo,
Por lo que entiendo quieres limpiar todo respecto a ese usuario, de ser así prueba drop user ...
y luego lo vuelves a crear ;).
2. Respecto a este tema, la diferencia entre ambo tipos es que char toma en cuenta los espacios, por lo tanto el campo id
tiene 'A' por ejemplo y es varchar2 solo estará 'A' si es char será 'A ', lo ves? un "desperdicio" de 3 bytes.
Así que suponiendo que será ese número no representa ningún problema.
3. No está mal el uso sino que el optimizador no toma en cuenta esas conversiones, supongo que si se están tomando los índices es porque son índices basados en funciones por lo tanto no hay problema.
Un saludo,
Byron.
El 11 de abril de 2009 17:45, Jorge Armas Moreno <jorarmasm@yahoo. com> escribió:
|
Amigos, queria consultar lo siguiente;
1. Un amigo dba, me paso la sentencia
sql> delete from dba_objects where owner='admsic' ;
la idea es limpiar el esquema admsic, sin embargo me lanza el mensaje
ORA-01732: data manipulation operation not legal on this view
Pregunta: Es correcto el DML, o que funcion/procedimien to debo usar para limpiar del esquema todos sus objetos de un solo paso
2. Habia creado la siguiente tabla,
CREATE TABLE SIC_DEP_BANCOS
(
BA_ID VARCHAR2(4 BYTE) NOT NULL,
BA_NOMBRE VARCHAR2(50 BYTE),
BA_PLAZA VARCHAR2(10 BYTE),
BA_COD_BANCO VARCHAR2(10 BYTE)
)
sin embargo aca me indican que debo usar en lugar de varchar2, solo char, la tabla no tendra las de 50 mil registros, cuanto influye que sea varchar2 o simplemente char, y en el caso de influir como lo puedo medir y que otras consideraciones debo tomar en cuenta |
3. Otra observacion que me indican es que esta mal el uso de funciones to_date y to_char en el where, para ello indican que es mejor usar fechas tipo cadena y compararlas usando el substring(mejor rendimiento) , es correcto esto??, a mi entender deberia ser un equilavalente, como se podria comprobar este punto; la tabla tiene aprox 3 millones de registros.
Nota: Agrego que ambos campos estan indizados y en el plan de ejecucion si usa dichos indices.
SELECT * FROM SIC_TABLA
WHERE CO_FEC_VEN >= TO_DATE('01/01/'||TO_CHAR(LD_ FECHA_PROC,'YYYY'),'DD/MM/YYYY');
Espero que me puedan ayudar y de antemado gracias por su respuesta
Atte
Jorge |
¡Obtén la mejor experiencia en la web! Descarga gratis el nuevo Internet Explorer 8.br> http://downloads. yahoo.com/ ieak8/?l= e1
|
¡Obtén la mejor experiencia en la web! Descarga gratis el nuevo Internet Explorer 8.br> http://downloads. yahoo.com/ ieak8/?l= e1
|
¡Obtén la mejor experiencia en la web! Descarga gratis el nuevo Internet Explorer 8 http://downloads. yahoo.com/ ieak8/?l= e1
|