Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MySQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-10-2015
JXJ JXJ is offline
Miembro
 
Registrado: abr 2005
Posts: 2.463
Poder: 15
JXJ Va por buen camino
Question ¿Stored procedured como hacer que regrese valores y poder usarlo en php delphi c#

Hola.

estoy con proeblamas con un stored procedure.

la idea es usarlo cuando registre un usuario.
y si existe. me regre el numero de id autoincrementable. ultimo. si es que no existe el usuario
y que me regrese un valor que me confirme si existe o no


como herramienta use heidisql que me da el error de que estoy declarando parametros que necesitan ingresar valor.
yo tengo entendido que como son valores INOUT o OUT, no me los deberia de pedir

y me da error. con sql maestro me dice que no se encuentra la columna maria pero si yo declare la columna como usuario. y maria
es el valor que voy a usar.

con la consola de comandos de mysql no he tenido suerte. me da error de odbc, cuando hago el login.


en php me da el error Fall� SELECT: (2014) Commands out of sync; you can't run this command now

Código:
<?php
$mysqli = new mysqli("localhost", "root", "a2210", "ejemplo");
if ($mysqli->connect_errno) {
    echo "Falló la conexión a MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
} 



if (!$mysqli->query("CALL usuarioregistra('maria111', 'dsa111', 'fe11')")) {
    echo "Falló CALL: (" . $mysqli->errno . ") " . $mysqli->error;
}

if (!($resultado = $mysqli->query("SELECT  idusuario FROM usuario"))) {
    echo "Falló SELECT: (" . $mysqli->errno . ") " . $mysqli->error;
}

// var_dump($resultado->fetch_assoc());


?>
este es el stored procedured.
Código SQL [-]

DROP PROCEDURE IF EXISTS usuarioregistra;

DELIMITER |

CREATE DEFINER = 'root'@'localhost' PROCEDURE usuarioregistra 
(
  IN     username   varchar(20),
  IN     userpass   varchar(20),
  IN     usermail   varchar(20),
  INOUT  IDUSER     int,
  INOUT  EXISTUSER  int
)
BEGIN
  /* Procedure text  la idea es que regrese el idusuario si ya existe y ayuda a validar registros de usuarios
   y si no existen los usuarios debe de poder regresar el id del nuevo usuario registrado
  */
    DECLARE SomeId int;
    DECLARE CheckExists int;  
    SET CheckExists = 0;  
    

    
      SELECT count(*) INTO CheckExists from usuarios WHERE usuario = username;   
 
    IF (CheckExists > 0) THEN 
     
        SELECT idusuario INTO SomeId FROM usuarios WHERE usuario = username;
      set  EXISTUSER = 1;
         
    ELSE 
           
        insert into usuarios(usuario,contra, email_address) 
        values (username,userpass, usermail);  
        
        SELECT SomeId   = LAST_INSERT_ID();     
   /* no jajala      SELECT @idusuario = LAST_INSERT_ID();
   */
          set EXISTUSER = 0;
                
    END IF; 
    /*  SET  IDUSER = SomeId;    
*/    
     
  
  
END|

DELIMITER ;


¿que hago mal?

¿si se pueden obtener valores de regreso del ultimo registro ingresado?
¿si se pueden obtener valores como lo estoy haciendo?

gracias
Responder Con Cita
  #2  
Antiguo 19-10-2015
orodriguezca orodriguezca is offline
Miembro
 
Registrado: ene 2009
Posts: 149
Poder: 9
orodriguezca Va por buen camino
Suponiendo que la base de datos es Firebird (porque no lo especificas) y que la columna idUsuario es una identity column, puedes hacer los siguiente:

Código SQL [-]
      select SomeId = (insert into usuarios(usuario,contra, email_address) 
                                 values (username,userpass, usermail)
                                returning idUsuario);
Responder Con Cita
  #3  
Antiguo 22-10-2015
JXJ JXJ is offline
Miembro
 
Registrado: abr 2005
Posts: 2.463
Poder: 15
JXJ Va por buen camino
Question

es base de datos mysql

crei que lo habia especificado en el titulo.


voy a seguri revisando.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
¿Como hacer un debugger para stored procedure firebird PSQL? JXJ Varios 1 02-01-2015 18:13:04
Como configurar aplicacion delphi con SQL Server para poder instalar en cualquier PC RedVenom Conexión con bases de datos 9 19-06-2011 23:40:58
Cómo hacer para retornar valores de una Unit a otra karo Varios 6 14-03-2009 20:57:28
Como hacer para que una funcion regrese varios valores jangel_ramirezm Varios 11 07-03-2008 22:14:49
grfinger como usarlo ? martita Varios 0 13-02-2008 18:47:37


La franja horaria es GMT +2. Ahora son las 03:18:48.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi