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

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-10-2015
JXJ JXJ is offline
Miembro
 
Registrado: abr 2005
Posts: 2.475
Poder: 21
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
 


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 19:13:04
Como configurar aplicacion delphi con SQL Server para poder instalar en cualquier PC RedVenom Conexión con bases de datos 9 20-06-2011 00:40:58
Cómo hacer para retornar valores de una Unit a otra karo Varios 6 14-03-2009 21:57:28
Como hacer para que una funcion regrese varios valores jangel_ramirezm Varios 11 07-03-2008 23:14:49
grfinger como usarlo ? martita Varios 0 13-02-2008 19:47:37


La franja horaria es GMT +2. Ahora son las 18:24:19.


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