Hola a todos soy nuevo en este foro
Necesito saber todo sobre funciones y vistas
Hoy logre hacer funciones básicas pero muy básicas en plpgsql y tengo algunas. pero las vista no las se hacer.
Preguntas a si que hay van:
¿Que es volatilidad al crear una función?
¿Se pueden llamar vista desde funciones?
¿Si quiero por ejemplo recupera varios registro de una tabla es mas conveniente hacer una función o una vista?
¿un las funciones se pueden ejecutar consulta anidadas?
En que lenguaje es más conveniente hacer las funciones porque pgadminIII tiene variar opciones c, plpgsql, sql, internal y cual es más fácil y rápido de aprender.
Porque tanta pregunta lo que para es que tengo que hacer un informe que consulta a toda la base de datos y son muchos datos. Lo hago con php pero tengo miedo que por la envergadura de las consulta el php tenga un timeout y no puede desplegar la información necesaria claro con lo que significar perder tiempo en hacer esas funciones un php.
por ejemplo tengo este codigo un php
function personal_que_trabajo($fecha_inicial, $fecha_final, $item,$cod_centro){
include('conexion.php');
$costodelitem=0;
$sql = "select distinct rut from personal_report where fecha between '$fecha_inicial' and '$fecha_final' and items='$item' and cod_centro='$cod_centro';";
$consulta = pg_exec($conexion, $sql);
if (pg_num_rows($consulta))
{
while ($filas = pg_fetch_array($consulta))
{
$rut = $filas["rut"];
$sql2 = "select valor_hora from valor_hora where rut='$rut' and desde<='$fecha_inicial' and hasta>='$fecha_final' UNION select sum(horas) from personal_report where rut='$rut' and fecha between '$fecha_inicial' and '$fecha_final' and items='$item' and cod_centro='$cod_centro'";
$consulta2 = pg_exec($conexion, $sql2);
if (pg_num_rows($consulta2))
{
$contador=0;
$datos=array();
while ($filas = pg_fetch_array($consulta2))
{
$contador++;
if($contador<3){
//echo "valor horas".$filas["valor_hora"];
array_push($datos,$filas["valor_hora"]);
}
}$costoenhoras=$datos[0]*$datos[1];
$costodelitem+=$costoenhoras;
}
}
}
if($costodelitem==0){
return $costodelitem="0";
}else{
return round($costodelitem,0);//=$fecha_inicial." ". $fecha_final." ". $item." ".$cod_centro;
}
}
esta funcion retorna una variable esto quiero hacerlo pero con funciones plpgsql las llamo de php y listo mucho mas rapido. me entienden.
Pd: alguien tiene un buen manual para vistas o plpgsql por favor compártalo o donde estas en la documentación de postgresql las funciones y las vista.
De antemano gracias
Una cosa se me olvida ta’ bueno este foro