Foros del Web » Programando para Internet » PHP »

¿Cómo llamar a una función de SQL en PHP?

Estas en el tema de ¿Cómo llamar a una función de SQL en PHP? en el foro de PHP en Foros del Web. Hola muy buenas tardes! He de decir que soy un habitual de este foro aunque no me había registrado hasta el día de hoy, seguramente ...
  #1 (permalink)  
Antiguo 13/08/2015, 13:21
Avatar de Kursakez  
Fecha de Ingreso: agosto-2015
Mensajes: 19
Antigüedad: 8 años, 8 meses
Puntos: 1
¿Cómo llamar a una función de SQL en PHP?

Hola muy buenas tardes!

He de decir que soy un habitual de este foro aunque no me había registrado hasta el día de hoy, seguramente porque encontré todo lo que me hizo falta hasta entonces

Sin embargo hoy me he topado con un problema que no supe solucionar :/

Estoy haciendo una llamada a mi base de datos en Oracle SQL developper desde un documento PHP en Aptana.

La función que llamo es la siguiente:

Código:
CREATE OR REPLACE FUNCTION generaCodProd
  (
  w_genero        IN productos.genero%TYPE,
  w_color         IN productos.color%TYPE,
  w_tipo_producto IN productos.tipo_producto%TYPE
  )
  RETURN VARCHAR2
  IS
  w_codigo productos.codigo%TYPE;
  BEGIN
  w_codigo:=CONCAT(SUBSTR(w_genero, 1, 1),CONCAT(SUBSTR(w_color, 1, 1),CONCAT(SUBSTR(w_tipo_producto, 1, 3),CODIGO.NEXTVAL)));
  RETURN (w_codigo);
  END;
  /
Donde CODIGO.NEXTVAL es una secuencia en SQL.

Bien, ahora la otra parte, la de PHP:

Código PHP:
function insertarProducto($conexion,$temporada,$tipo_producto,$genero,$precio,$nombre_producto,$color,$descripcion,$imagen){
        try{
            
$stmt=$conexion->prepare("CALL GENERACODPROD(:genero,:color,:tipo_producto)");
            
$stmt->bindParam(":genero",$genero);
            
$stmt->bindParam(":color",$color);
            
$stmt->bindParam(":tipo_producto",$tipo_producto);
            
$stmt->execute();
            return 
"ok";    
        }catch(
PDOException $e){
            echo 
$e->getMessage();
        }
    } 
Bueno pues al llamar a esta función, el navegador me muestra este mensaje:

Código:
SQLSTATE[HY000]: General error: 6576 OCIStmtExecute: ORA-06576: not a valid function or procedure name (ext\pdo_oci\oci_statement.c:148)
Yo he sospechado que sería del nombre de la función, pero en ambos códigos es el mismo... mmmmmmm... me pueden ayudar?
  #2 (permalink)  
Antiguo 13/08/2015, 13:55
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: ¿Cómo llamar a una función de SQL en PHP?

Cita:
pero en ambos códigos es el mismo
Tal vez "sean lo mismo" pero no son iguales.

Defines generaCodProd pero usas GENERACODPROD.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 13/08/2015, 17:08
Avatar de Kursakez  
Fecha de Ingreso: agosto-2015
Mensajes: 19
Antigüedad: 8 años, 8 meses
Puntos: 1
Respuesta: ¿Cómo llamar a una función de SQL en PHP?

Gracias por responder e interesarte en mi caso pateketrueke. Mmmmm pero que va :/ He probado también siendo crítico al uso de mayúsculas/minúsculas (copiando el nombre de la base de datos tal cual está al código php) y sale el mismo error.
  #4 (permalink)  
Antiguo 13/08/2015, 17:09
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: ¿Cómo llamar a una función de SQL en PHP?

¿Al menos sabes cómo ejecutar dicho procedimiento directamente en la base de datos?

¿Ya lo has probado con anterioridad sin el uso de código PHP?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 13/08/2015, 17:11
Avatar de Kursakez  
Fecha de Ingreso: agosto-2015
Mensajes: 19
Antigüedad: 8 años, 8 meses
Puntos: 1
Respuesta: ¿Cómo llamar a una función de SQL en PHP?

No, y no sé como probarlo :( Por otra parte, acabo de ejecutarlo otra vez y me tira este error ahora:

Código:
SQLSTATE[HY000]: General error: 900 OCIStmtExecute: ORA-00900: invalid SQL statement (ext\pdo_oci\oci_statement.c:148)
Y no he cambiado código :S

Etiquetas: sql
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 00:34.