Scripts Capitulo11
Scripts Capitulo11
Scripts Capitulo11
declare
v_cadena varchar2(120);
begin
v_cadena := 'insert into DEPARTMENTS(DEPARTMENT_ID, DEPARTMENT_NAME
,MANAGER_ID, LOCATION_ID) values(280,'depto demo',null,1700)';
execute immediate v_cadena;
commit;
end;
declare
v_cadena varchar2(120);
begin
v_cadena := "insert into DEPARTMENTS(DEPARTMENT_ID, DEPARTMENT_NAME
,MANAGER_ID, LOCATION_ID) values(280,'depto demo',null,1700)";
execute immediate v_cadena;
commit;
end;
declare
v_cadena varchar2(120);
begin
v_cadena := 'insert into DEPARTMENTS(DEPARTMENT_ID, DEPARTMENT_NAME
,MANAGER_ID, LOCATION_ID) values(280,'||''''||'depto demo'||''''||',null,1700)';
execute immediate v_cadena;
end;
/
xxxxxxxxxxxxxx
Intentamos insertar un registro en la tabla DEPARTMENTS, METODO 2 usando una
variable.
Esta solo es parseada una sola vez.
xxxxxxxxxxxxxx
declare
v_cadena varchar2(120);
v_dep number(3) := 280;
v_nam char(30) :='depto demo';
v_man number := null;
v_loc number(4) := 1700;
begin
v_cadena := 'insert into DEPARTMENTS(DEPARTMENT_ID, DEPARTMENT_NAME
,MANAGER_ID, LOCATION_ID) values(:b_dep,:b_nam,:b_man,:b_loc)';
execute immediate v_cadena using v_dep, v_nam, v_man, v_loc;
end;
/
xxxxxxxxxxxxxx
Consutamos registro insertado, METODO 3 usando una variable.
xxxxxxxxxxxxxx
set serveroutput on
declare
v_cadena varchar2(120);
v_dep number(3) := 280;
v_nam char(30);
v_man number(3);
v_loc number(4);
begin
v_cadena := 'select DEPARTMENT_NAME ,MANAGER_ID, LOCATION_ID from DEPARTMENTS
where department_id= :b_dep';
execute immediate v_cadena into v_nam, v_man, v_loc using v_dep;
---------------------------- SLIDE 6
---------------------------- SLIDE 8
CREATE FUNCTION annual_sal( p_emp_id NUMBER) RETURN NUMBER IS
v_plsql varchar2(200) :='DECLARE '||
' rec_emp employees%ROWTYPE; '||
'BEGIN '||
' rec_emp := get_emp(:empid); ' ||
' :res := rec_emp.salary * 12; ' ||
'END;';
v_result NUMBER;
BEGIN
EXECUTE IMMEDIATE v_plsql USING IN p_emp_id, OUT v_result;
RETURN v_result;
END;
/
EXECUTE DBMS_OUTPUT.PUT_LINE(annual_sal(100))
------------------------- SLIDE 9
DECLARE
v_emprec employees%ROWTYPE := get_emp(100);
BEGIN
DBMS_OUTPUT.PUT_LINE('Emp: '|| v_emprec.last_name);
END;
/
---------------DBMS_SQL
---------------------------- SLIDE 8
CREATE OR REPLACE FUNCTION delete_all_rows(p_table_name VARCHAR2) RETURN NUMBER IS
v_cur_id INTEGER;
v_rows_del NUMBER;
BEGIN
v_cur_id := DBMS_SQL.OPEN_CURSOR;
DBMS_SQL.PARSE(v_cur_id,'DELETE FROM '|| p_table_name, DBMS_SQL.NATIVE);
v_rows_del := DBMS_SQL.EXECUTE (v_cur_id);
DBMS_SQL.CLOSE_CURSOR(v_cur_id);
RETURN v_rows_del;
END;
/
v_rows_added := DBMS_SQL.EXECUTE(v_cur_id);
DBMS_SQL.CLOSE_CURSOR(v_cur_id);
DBMS_OUTPUT.PUT_LINE(v_rows_added||' row added');
END;
/