Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

como hacer un procedimiento con select

Estas en el tema de como hacer un procedimiento con select en el foro de Oracle en Foros del Web. Saludos.. Yo en mysql puedo hacer esto: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código SQL: Ver original DELIMITER $$ DROP PROCEDURE IF EXISTS `bd` . `sp_envio` $$ CREATE DEFINER ...
  #1 (permalink)  
Antiguo 04/10/2011, 13:41
 
Fecha de Ingreso: julio-2009
Mensajes: 8
Antigüedad: 14 años, 8 meses
Puntos: 0
como hacer un procedimiento con select

Saludos..
Yo en mysql puedo hacer esto:
Código SQL:
Ver original
  1. DELIMITER $$
  2. DROP PROCEDURE IF EXISTS `bd`.`sp_envio`$$
  3. CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_envio`()
  4. BEGIN
  5. SELECT cod_env AS codEnv,fecini_env AS fecIniEnv,fecfin_env AS fecFinEnv,
  6. cons_env AS consEnv,est_env AS estEnv,fecpro_env AS fecProEnv,
  7. estJar_env AS estJarEnv,cod_remi AS codRemi,cod_men AS codMen
  8. FROM tb_envio ORDER BY codEnv ;
  9. END$$
  10. DELIMITER ;

En oracle como seria?
Hacer un select dentro de un procedimiento.
Estoy utilizando postgresql pero como oracle se parece mucho.
  #2 (permalink)  
Antiguo 05/10/2011, 05:41
Avatar de h2swider  
Fecha de Ingreso: julio-2007
Ubicación: Ciudad de Buenos Aires
Mensajes: 932
Antigüedad: 16 años, 9 meses
Puntos: 194
Respuesta: como hacer un procedimiento con select

tendrías que hacer un procedimiento con un parámetro de salida de tipo puntero para luego poder recorrerlo. Yo trabajo con procedimientos que llamo desde php, y hago algo así:

Código PHP:
$sql "BEGIN test( :entrada1, :p_entrada2 , :salida); END;";
        
$conex Conexion::getInstancia(USUARIO2PASSWORD2BASE2SERVIDOR2);
        
$stid oci_parse($conex$sql);

        
oci_bind_by_name($stid':p_entrada1'$usuario, -1SQLT_CHR);
        
oci_bind_by_name($stid':p_entrada2'$edad, -1SQLT_INT);

        
$salida oci_new_cursor($conex);
        
oci_bind_by_name($stid":salida"$salida, -1OCI_B_CURSOR);
        
oci_execute($stid);
        
oci_execute($salida); 
Y en oracle..

Código:
CREATE OR REPLACE PACKAGE tipos as
type cursor_type is ref cursor;
end;
/

PROCEDURE test(p_usuario in  varchar, p_edad in  number, p_recordset out tipos.cursor_type) as 
    begin 
        open p_recordset for
        select * from tabla_test where usuario=p_usuario and edad=p_edad;
    end test;
/
Para finalmente recorrerlo fila a fila de esta manera
Código PHP:
while ($row oci_fetch_array($stidOCI_ASSOC OCI_RETURN_NULLS)) {
 echo 
"$row</br>";

Espero que te sirva de alguna manera
__________________
Codifica siempre como si la persona que finalmente mantedra tu código sea un psicópata violento que sabe donde vives

Etiquetas: bd, procedimiento, select
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:50.