1.-introduccion los tipos compuestos,son tipos definidos por el usuario,y por lo tanto hay que,primero defines el tipo y luego declarar variables de ese tipo , 2.-registros los registros plsql son muy similares a las estructuras de c, 3.-sintaxis type id_tipo_reg is record (
);
campo1 tip1 [not null][:=exp1],//keyword como pr defecto campo2 tipo2[not null][:=exp2], id_var id_tipo_reg;
ejemplo: type r_empresa is record( nif char(10) not null:='00000000-x', nombre varchar2(20), fecha_ini date, descripcion varchar2(40)); v_emp1 v_emp2
r_empresa; r_empresa;
para poder introducir valores al registro o se puede introducir uno a uno (ej: v_emp1.nombre:='pepe') o igualando estructuras de mismo tipo(ej: v_emp1=v_emp2 //solo del mismo tipo) y haciendo un select para igualarlo. con %rowtype se devuelve la estructura de una tabla. ej: v_usuarios usuarios%rowtype; no se pueden asignar listas de valores a un registro, y no se pueden utilizar en operacciones de inserccion. ej: de todo declare k_usu constant usuarios.num_socio%type:='a1111'; v_usu usuarios%rowtype; begin select * into v_usu from usuarios where num_socio=k_usu; dbms_output.put_line(v_usu.dni||' '||v_usu.nombre||' '||v_usu.apellidos||' '||v_usu.localidad); end; /
crear un registro que almacene el nombre de una tabla la fecha actual y el numero de filas actuales que tiene esa tabla, guardar en el registro los datos actuales y mostrarlos por pantalla. declare type r_tabla is record( nombre char(6):='bancos', fecha date, filas number ); v_tabla r_tabla; begin select count(*) into v_tabla.filas from bancos; v_tabla.fecha:=sysdate; dbms_output.put_line(v_tabla.nombre||' '||v_tabla.fecha||' '|| v_tabla.filas); end; /