Cursores - AnyerSM/BASEDATOS2 GitHub Wiki
CREATE TABLE USUARIO1 (ID_USUARIO1 INTEGER, NOMBRE VARCHAR2(120), EMAIL VARCHAR2(90), SUELDO_BASE FLOAT, CONSTRAINT ID_USUARIO1_PK PRIMARY KEY(ID_USUARIO1));
create sequence sec_usuario1 start with 1 increment by 1 nomaxvalue;
create or replace PROCEDURE GUARDAR_USUARIO1( MY_ID_USUARIO1 OUT INTEGER, MY_NOMBRE IN VARCHAR2, MY_EMAIL IN VARCHAR2, MY_SUELDO_BASE IN FLOAT) AS BEGIN SELECT SEC_USUARIO1.NEXTVAL INTO MY_ID_USUARIO1 FROM DUAL; INSERT INTO USUARIO1 VALUES(MY_ID_USUARIO1, MY_NOMBRE, MY_EMAIL, MY_SUELDO_BASE); END; /
DECLARE MY_ID INTEGER; BEGIN GUARDAR_USUARIO1(MY_ID,'CHANA','[email protected]',6000); GUARDAR_USUARIO1(MY_ID,'PANCRACIO','[email protected]',5000); GUARDAR_USUARIO1(MY_ID,'PETRONILA','[email protected]',8000); END; / SELECT * FROM USUARIO1;
set serveroutput on;
declare ALGO varchar2(120); begin dbms_output.put_line('probaremos un cursor implicito'); --cursor implicito select nombre INTO ALGO from USUARIO1 where ID_USUARIO1=1; dbms_output.put_line('en la memoria global esta:'||ALGO); end; / --el mismo ejercicio con cursor explicito oara obtener muchas filas en memoria declare cursor CUR_USUARIO1 is select * from USUARIO1; begin for REC_USUARIO in CUR_USUARIO1 loop dbms_output.put_line('en este momento esta en memoria:' ||REC_USUARIO.NOMBRE); end loop; end; /