Foros del Web » Programando para Internet » PHP »

Stored Procedure y php

Estas en el tema de Stored Procedure y php en el foro de PHP en Foros del Web. Este es mi pequeño aporte (php5-mysql5) stored procedure de ejemplo (Recomiendo utilizar mysql query browser) DELIMITER $$ DROP PROCEDURE IF EXISTS `prueba`.`SP_tb_Pger_AM`$$ CREATE PROCEDURE `SP_tb_Pger_AM`(in ...
  #1 (permalink)  
Antiguo 04/11/2005, 12:06
Avatar de moron  
Fecha de Ingreso: mayo-2004
Mensajes: 972
Antigüedad: 19 años, 11 meses
Puntos: 2
Stored Procedure y php

Este es mi pequeño aporte (php5-mysql5)

stored procedure de ejemplo (Recomiendo utilizar mysql query browser)

DELIMITER $$

DROP PROCEDURE IF EXISTS `prueba`.`SP_tb_Pger_AM`$$
CREATE PROCEDURE `SP_tb_Pger_AM`(in accion varchar(1),
in nroBBC int,
in fraccion int,
in nroSerie float)
BEGIN
IF accion = 'A' THEN
INSERT INTO prueba.prueba(nroBB,fraccion,nroSerie) VALUES (nroBBC,fraccion,nroSerie);
END IF;

IF accion = 'M' THEN
UPDATE prueba.PRUEBA SET roBB=roBB,fraccion=fraccion, nroSerie = nroSerie WHERE idReg= idReg ;
END IF;
END$$

DELIMITER ;

archivo de coneccion:(El que todos conocemos).
<?php
function Conectarse()
{
if (!($link=mysql_connect("localhost","root","pass")) )
{
echo "Error conectando a la Base de datos.";
exit();
}
if (!mysql_select_db("prueba",$link))
{
echo "Error seleccionando la base de datos.";
exit();
}
return $link;
}
?>



y Luego lo llamamos asi desde PHP:
(doy por hecho que hay un form que toma los datos y hace accion al siguiente archivo)

include ("coneccion.phtml");
$link=conectarse();
$fraccion = $_POST['fraccion'];
$nroBB= $_POST['nroBB'];
$nroSerie = $_POST['nroSerie'];

mysql_query("call V100_SP_tb_pger_AM('A',$fraccion,$nroBB,$nroSerie) ",$link)
or die(mysql_error());
echo mysql_error($link);

Que lo disfruten...

En lo que tengo inconvenientes es cuando llamo a un Stored procedure que realiza solo un listar (select *..) que no lleva parametros y debe devolver los registro me aparece el siguiente error:

PROCEDURE prueba.V100_SP_tb_prueba_listar can't return a result set in the given context

En cuanto lo solucione lo posteo, y si alguien sabe que me ahorre el tranco.
saludos
  #2 (permalink)  
Antiguo 05/11/2005, 15:24
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cuando lo soluciones estaría bueno que creases una FAQ al respecto (al igual que hay otra sobre manejo de "Store Procedure" pero para SQL Server)

Un saludo,
  #3 (permalink)  
Antiguo 07/11/2005, 08:36
Avatar de moron  
Fecha de Ingreso: mayo-2004
Mensajes: 972
Antigüedad: 19 años, 11 meses
Puntos: 2
por supuesto. No he tenido tiempo se averiguar cual es el problema aun, pero ya voy a dar con el y publicar la faq.
saludos.
  #4 (permalink)  
Antiguo 07/11/2005, 12:09
 
Fecha de Ingreso: junio-2005
Mensajes: 981
Antigüedad: 18 años, 10 meses
Puntos: 2
Ya que abrieron este thread, me podrian decir de alguna pagina que tenga un articulo completo sobre este tema? Estube buscando en google y no encontre mas que unos articulos para hacerlo en otros lenguajes y algunos otros que no explican practicamente nada.

Saludos y desde ya muchas gracias.
  #5 (permalink)  
Antiguo 07/11/2005, 12:19
Avatar de moron  
Fecha de Ingreso: mayo-2004
Mensajes: 972
Antigüedad: 19 años, 11 meses
Puntos: 2
hola dario * 2

Hay muy poco, sin embargo, para quemarte un poco la cabeza tenés el manual de mysql 5 que tiene referencias de como utilizar los stored procedure
luego, en base a lo que vayas necesitando, ir buscando soluciones puntuales en google que "algo" hay. y Luego, postealo aca asi tenemos mas info al respecto :P .
Por otro lado, si tenés alguna duda sin resolver, postealo a ver si sacamos algo, recien empiezo con esto, pero quien sabe, si me agarrás iluminau puede que te ayude.

salute
  #6 (permalink)  
Antiguo 07/11/2005, 21:38
 
Fecha de Ingreso: junio-2005
Mensajes: 981
Antigüedad: 18 años, 10 meses
Puntos: 2
Bueno, les comento que yo desconocia hasta la definicion de "Stored Procedure", segun lo que lei se almacenan procedimiento en la propia DB y luego se llaman de una forma abreviada y este mejora el rendimiento segun el tipo de consultas y es mucho mas limpia la programacion ya que ésta separada del codigo. Tambien "entiendo" que solo se puede usar en MySql 5, esto es correcto?. Estaria bueno que cuando posteen en las FAQ explicaran todo este tipo de detalles ya que me a costado encontrar esto (mas que nada porque mi ingles es malisimo y la mayor info esta en ese idioma), estube leyendo la documentacion de MySql 5 pero esta de mas decirles que no he entendido la mayor parte.

Y como dices Moron "algo" hay, el tema que para mi hay menos ya que el 90% de ese "algo" esta en ingles . Y en cuanto encuentre info sobre esto la posteare sin dudarlo.

Saludos.
  #7 (permalink)  
Antiguo 07/11/2005, 22:38
Avatar de leeja  
Fecha de Ingreso: octubre-2005
Mensajes: 82
Antigüedad: 18 años, 5 meses
Puntos: 0
seria bueno tener ese manual en castellano....el manejo d procedimientos almacenados no es nada nuevo para el q maneja sql server...pero con mysql si q es nuevo....
__________________
www.datasegura.net
  #8 (permalink)  
Antiguo 08/11/2005, 06:39
Avatar de moron  
Fecha de Ingreso: mayo-2004
Mensajes: 972
Antigüedad: 19 años, 11 meses
Puntos: 2
Dario, para tener un concepto de lo que son los SP, no te limites a buscar solamente info de mysql (Aunque si buscas en este foro vas a encontrar hilos que hablan del tipo de info que estas requiriendo).
Te comento, aunque ya se trató en otros post, que los SP se pueden utilizar recien en versiones superiores a mysql 5.0.
lee algo de la teoria de SP para MSSQL server que hay muucha mas que mysql, y una vez que tengas el concepto bien claro, busca la forma de hacerlo con otro gestor de bd.
fijate que en este terrible foro, hay mucha info al respecto, solo es cuestion de buscar.

saludos miles y suerte
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 12:51.