+ Responder al Tema
Resultados 1 al 2 de 2

Tema: Llamar un stored procedures y un stored function de ORACLE XE con PHP

  1. Fecha de Ingreso
    07/feb/2010
    Ubicación
    Guayaquil - Ecuador
    Mensajes
    3

    Llamar un stored procedures y un stored function de ORACLE XE con PHP

    Hace algun tiempo tuve la necesidad de trabajar con Oracle 9i y PHP en una intranet.

    Uno de los problemas que tuve es de interactuar PHP con los procedimientos almacenados de oracle. o las funciones almacenadas, despues de varios dias de busqueda y un poco de conocimiento logre hacerlo y posteare aqui como hacerlo por si alguien lo necesita alguna vez.

    Para este ejemplo vamos a necesitar ORACLE EXPREES EDITION (version gratuita), WAMP o cualquier servidor que soporte PHP previamente configurado para trabajar con ORACLE y cualquier editor de texto.

    Este ejemplo consta de vamos a crear en nuestra base de datos ORACLE XE una tabla que se llame USUARIOS con parametros realmente sencillos para hacerlo practico.
    Código:
    CREATE TABLE  "USUARIOS" 
       (	"CODIGO" NUMBER NOT NULL ENABLE, 
    	"NOMBRES" VARCHAR2(200) NOT NULL ENABLE, 
    	"APELLIDOS" VARCHAR2(200) NOT NULL ENABLE, 
    	 CONSTRAINT "USUARIOS_PK" PRIMARY KEY ("CODIGO") ENABLE
       )
    /
    
    CREATE OR REPLACE TRIGGER  "BI_USUARIOS" 
      before insert on "USUARIOS"               
      for each row  
    begin   
        select "USUARIOS_SEQ".nextval into :NEW.CODIGO from dual; 
    end; 
    
    /
    ALTER TRIGGER  "BI_USUARIOS" ENABLE
    una vez creada la base de datos crearemos dos bloques de codigo SQL en la interfaz de ORACLE XE.
    La primera sera un procedimiento almacenado vamos a crear una funcion que nos muestre si el usuario existe o no en la base de datos pasandole por parametros el nombre y apellido del usuario:

    Código:
    CREATE OR REPLACE PROCEDURE 
            sayHello (nombre IN VARCHAR2, apellidoUsuario OUT VARCHAR2) 
            AS
            result VARCHAR(200);
            BEGIN
                          SELECT APELLIDOS INTO result FROM USUARIOS WHERE NOMBRES = nombre;
                          apellidoUsuario := result;
            EXCEPTION
            WHEN NO_DATA_FOUND THEN
            apellidoUsuario := 'No Existe';
            END;
    Ahora vamos a crear nuestra funcion almacenada casi identica al stored procedures.

    Código:
    create or replace function obtener_id(                                    
      	 	nombres IN varchar2) return number is   
    	 	begin
    	 	  return 2;
    	 	end;
    Como podran ver son muy sencillos, cabe recalcar que esta no es una clase de bases de datos y los ejemplos son bien practicos solo para demostrar como invocar estas funciones y procedimientos desdde PHP.

    Una vez que tenemos lista la data ahora si podemos jugar con ella a traves de PHP. para este ejempplo crearemos dos scripts. uno que sera funciionOra.php y procedureOra.php

    Empezemos procedureOra.php
    Código PHP:
    /** La respectiva llamada a la base de datos
     *  Este es un ejemplo bien sencillo la conexion se debera hacer con una clase de manera de centralizar las multiples 
     *  conexiones de nuestra aplicacion
     */
        
    //Aqui realizamos como cualquier string hacia la base de datos en este caso Cada procedimiento almacenado Empezara con la palabra BEGIN y TERMINARA en END, para mas informacion recomiendo leer algun manual de PL/SQL.

           
    $query =   "BEGIN sayHello(:nombre , :apellidoUsuario ); END;";
        
    $stmt OCIParse($conn$query);


        
    OCIBindByName($stmt':nombre',$nombres,32);
        
    OCIBindByName($stmt':apellidoUsuario',$apellidoUsuario,32);
        
    $nombres='Victor Manuel';
        
    OCIExecute($stmt);
        echo 
    $apellidoUsuario."\n"
    podemos ejecutar el php y si todo lo hemos hecho bien nos saldra como resultado el paellido de nuestro usuario y en caso no estar en la base saldra que no existe.

    Si quieres saber un poco mas sobre el funcionamiento de OCIBindByName puedes entrar [Solo usuarios registrados pueden ver los links. ]

    y por ultimo nuestro archivo functionOra.php
    Código PHP:
          $sql "select obtener_id(:codigo)RESULT FROM DUAL";
        
    $stmt OCIParse($conn$sql);
        
    OCIBindByName($stmt':codigo',$codigo,32);
        
    $codigo=1;
        
    OCIExecute($stmt);
        
    OCIFetch($stmt);
        
    $tot=OCIResult($stmt,"RESULT");
        echo 
    "resultado es: ".$tot
    Listo el ejemplo es muy basico para entender de una manera simple como interactuar con ORacle desde php.
    espero les sirva..

    Saludos Estimados amigos de Forogenio!

  2. Fecha de Ingreso
    02/dic/2009
    Mensajes
    265
    Puntos
    1.124,25

    Exelente aporte, muy bien explicado, Gracias!!!!!
    Ricardo - Administrador
    [Solo usuarios registrados pueden ver los links. ]
    MSN: [Solo usuarios registrados pueden ver los links. ]
    [Solo usuarios registrados pueden ver los links. ]
    [Solo usuarios registrados pueden ver los links. ]

+ Responder al Tema

Otros visitantes encontraron esta página al buscar:

stored functions oracle

stored procedure con funciones oracle php

stored function oracle

LLAMAR PROCEDIMIENTOS ALMACENADOS ORACLE DESDE PHP

oracle stored functions

que es stored functionstored function pl/sqlstored functionejemplos de procedures en oracle expresscomo llamo a una funcion en un store procedure de oracle desde phporacle stored procedures ejemplobegin php oraclestored functions PL/SQLstored functions in oraclecomo usar una funcion almacenada en oracle con phpcomo ver el codigo de un stored en oraclefor each row oracle procedureinvocar funcion estore procedure desde php hacia oraclestored functiosn oraclellamar a funcion oracle desde php beginstored functions base de datosque es stored functions in oraclellamar stored functions oracleque es una stored functionexception unique constraint oracle stored procedure

Etiquetas de este tema

Permisos para publicar mensajes

  • No puedes crear nuevos temas
  • No puedes responder mensajes
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
Hotmail Correo - Cheat Engine - Matangaweb - Friv -