Crear variables en PL/SQL (%TYPE y %ROWTYPE)

Hola a todos, hoy os voy a explicar como crear variables en PL/SQL.

Cuando creemos nuestros PL/SQL, sera necesario que creemos nuestras propias variables.

Todo lo que declaremos, lo debemos hacer en el bloque de DECLARE.

Os pongo un ejemplo de como se declara una variable:


declare
  i number(8) := 1;
begin
  DBMS_OUTPUT.PUT_LINE(i);
end;
/

Como puedes ver, se declara poniendo el nombre y el tipo, como si fuera un campo de una tabla. También podemos poner varchar2, date, etc.

Para asignar un valor se usa := no = ten cuidado con ello.

 

Normalmente, las variables que creemos van a hacer referencias a campos de una tabla de la base de datos. Como debería coincidir para que no nos diera error, tendríamos que poner el mismo tipo.

Siempre en la medida de lo posible intentad poner el nombre de las variables con el prefijo v_

Para evitar que tener que estar buscando el tipo que coincida, podemos usar %type, esto hace que datos una tabla y un campo obtenga el tipo. Por ejemplo:


declare
  v_codigocliente clientes.codigocliente%type;
begin

end;
/

Esto lo que hace es que el tipo de v_codigocliente es el mismo que el del campo codigocliente de la tabla clientes.

También tenemos otro mas llamado %rowtype que es como el %type pero en lugar de un campo hace referencia a toda una fila, en este caso no es necesario indicar el campo, pero si la tabla. Os muestro un ejemplo:


declare
  v_codigopedido pedidos.codigopedido%type := &codigo;
  v_pedido pedidos%rowtype;
begin

  select * into v_pedido
  from pedidos
  where codigopedido = v_codigopedido;

  DBMS_OUTPUT.PUT_LINE('La fecha de pedido es ' || v_pedido.fechapedido
                         || ', la fecha esperada es ' || v_pedido.fechaesperada
                         || ', la fecha de entrega es ' || v_pedido.fechaentrega
                         || ', el estado es ' || v_pedido.estado
                         || ' y los comentarios son ' || v_pedido.comentarios
                         );


end;
/

Para que os hagáis una idea es como si fuera un objeto a la hora de acceder, por ejemplo, v_pedido.comentarios.

Espero que os sea de ayuda. Si tenéis dudas, preguntad. Estamos para ayudarte.

Etiquetas

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *