Ver Mensaje Individual
  #4 (permalink)  
Antiguo 12/11/2011, 18:02
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: generar valores alatorios

Vamos desde el comienzo:
1) Las funciones aleatorias no devuelven caracteres. Sólo lo numérico es aleatorio, por lo que RAND() sólo devuelve un valor numérico.
2) RAND() sólo devuelve un valor aleatorio entre 0.0 y 1.0, po rlo que para evaluar el resultado debe multiplicarse por algún valor potencia de 10. Supongamos 100, para tener un rango seguro de números analizables.
3) Considerando que sólo tienes dos opciones (A y D), podemos usar simplemente el que el número sea par o impar, para determinar cuál es el que pondremos.
4) Determinar si un número es par o no es uno de los ejercicios más básicos de programación: Los impares tienen resto de división al ser divididos por 2...
Entonces la cosa sería:
Código MySQL:
Ver original
  1.   DECLARE tipoventa INT;
  2.   WHILE (i<=5) DO
  3.     SET tipoventa = CAST((RAND()*100) AS UNSIGNED);
  4.     IF (tipoventa % 2) > 0 THEN/*1 ES TIPO DE VENTA CREDITO*/
  5.       INSERT INTO venta(Tip_Venta,estado_venta,cod_Usuario,monto_ven ta,interes,descuento,fecha_venta,turno_venta,hora_ venta)
  6.       VALUES(tipoventa,'0012009',letraaleatorio,10.000,0 .200,0.000,'2009-10-01',2,'11:56 AM');
  7.     ELSE
  8.       INSERT INTO venta(Tip_Venta, estado_venta,cod_Usuario,monto_venta,interes,descuento,fecha_venta,turno_venta,hora_ venta)
  9.       VALUES(tipoventa,'0012009',letraaleatorio,10.000,0 .000,0.000,'2009-10-01',2,'11:56 AM');
  10.     END IF;
  11.     SET i=i+1;
  12.   END WHILE;

Pero aquí hay algo interesante: Todo esto que estás haciendo no tiene ninguna utilidad, porque esto mismo lo podrías hacer directamente en la aplicación, y no derivarle esa responsabilidad a la base de datos, donde no deberías hacerlo. Si lo único que varía es un único valor del INSERT ¿por qué no lo defines en el programa, cuando creas ,dinámicamente la sentencia? ¿Por qué quieres hacerlo en un SP, cuando no se necesita ni produce ninguna utilidad?

A mi entender estás complicando innecesariamente todo el asunto...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)