Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Storeprocedures

Estas en el tema de Storeprocedures en el foro de Mysql en Foros del Web. Muchanchos que tal ... en SQLServer yo haria esto @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código SQL: Ver original IF NOT EXISTS ( SELECT * FROM proveedor WHERE ruc ...
  #1 (permalink)  
Antiguo 08/03/2012, 15:27
Avatar de HiToGoRoShi  
Fecha de Ingreso: abril-2008
Mensajes: 849
Antigüedad: 16 años
Puntos: 31
Storeprocedures

Muchanchos que tal ... en SQLServer yo haria esto

Código SQL:
Ver original
  1. IF NOT EXISTS ( SELECT * FROM proveedor WHERE ruc = @p_ruc)
  2.   BEGIN
  3.     INSERT INTO proveedor(ruc,proveedor)
  4.     VALUES (p_ruc,p_proveedor);  
  5.    
  6.     SELECT 1
  7.   END
  8.   ELSE
  9.   BEGIN
  10.     SELECT 0
  11.   END

Ahora mi pregunta es, como lo hago en MySQL, se me ocurre hacer un COUNT pero no es lo mas eficiente en rendimiento
  #2 (permalink)  
Antiguo 08/03/2012, 16:15
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Storeprocedures

Hola HiToGoRoShi:

En MySQL podrías hacer exactamente lo mismo, lo único diferente sería la sintaxis del IF:

http://dev.mysql.com/doc/refman/5.0/...statement.html

Recuerda que en MySQL todas las sentencias deben terminar con (;) por lo que después del INSERT deberías colocarlo, y para el caso de los parámetros, ojo también con los nombres de los parámetros, en el EXISTS utilizas @p_ruc y en el insert lo pones sin el @... hay que ser consistentes. Intenta hacer el SP, si te marca algún error postea tu código de MySQL y con gusto de decimos donde están los errores.

Checa también esta liga
http://www.forosdelweb.com/f86/posib...ste-if-978890/

Ahí se hace algo como lo que pretendías hacer con el COUNT, pero la manera en que lo tienes pensado es mejor.

Saludos
Leo
  #3 (permalink)  
Antiguo 08/03/2012, 18:51
 
Fecha de Ingreso: junio-2011
Mensajes: 139
Antigüedad: 12 años, 10 meses
Puntos: 42
Respuesta: Storeprocedures

Hola HiToGoRoShi,

Si quieres evitarte el "IF" puedes hacer algo como:

Código MySQL:
Ver original
  1. insert into proveedor (ruc, proveedor)
  2. select p_ruc, p_proveedor
  3. from dual
  4.     select null
  5.     from proveedor
  6.     where ruc = p_ru
  7.     limit 1);
Espero te sea útil.
  #4 (permalink)  
Antiguo 09/03/2012, 10:00
Avatar de HiToGoRoShi  
Fecha de Ingreso: abril-2008
Mensajes: 849
Antigüedad: 16 años
Puntos: 31
Respuesta: Storeprocedures

jajaj que loco ese insert, buena idea ... tengo otra duda ahora, si me olvide poner el @, pero en SQLServer los parametros de entrada los distingo por @, en cambio aca no va a asi, y siempre me usta poner los mismos nombre de los camos a los parametros de entrada oseaaa, que pasaria si hago esto

En sql lo haria asi
Código SQL:
Ver original
  1. INSERT INTO mi_tabla(campo1) VALUES (@campo1)

En mysql, lo cual no lo intente le puse un prefijo a los parametros de entrada
Código SQL:
Ver original
  1. INSERT INTO mi_tabla(campo1) VALUES (campo1)

Etiquetas: select, 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 21:14.