Quien soy? RSS feed Enviar por email Imprimir Parar este menu Ir arriba
Blogzote.com
Mexico, informatica, internet, musica y algo mas…
Pagina 4 de 24« Primera...«3456»...Ultima »

DBMS_RANDOM en Oracle

Hace algún tiempo recuerdo haber necesitado generar una contraseña aleatoria en Oracle pero al no encontrar una solución fácil nos fuimos por ponerle de contraseña el mismo nombre de usuario, o sea, si era el usuario “fulanito” le pone la contraseña “fulanito”, esto desde un modulo clásico de “olvide mi contraseña”.

Hoy buscando en Internet la solución para otro problema me tope con el paquete dbms_random de oracle, que entre sus funcionalidades esta la generación de una cadena con caracteres aleatorios, hubiera quedado perfecto para el problema que comento, y no solo sirve para eso, sirve también para generar números aleatorios, pudiendo seleccionar el rango en el que estén esos números.

Pero la opción que considero mas importante es que incluso lo puedo utilizar para seleccionar algún registro aleatorio de una tabla. Me recuerda el “ORDER BY RAND()” de Mysql, aunque no es tan “natural” acá en Oracle como lo es en Mysql, les dejo unos ejemplos de su uso, seguro a mas de uno le ayudara a resolver algo.

Una simple consulta para generar un número aleatorio:

1
2
3
4
5
SQL> SELECT DBMS_RANDOM.random FROM dual;
 
    RANDOM
----------
-267030442

Pero resulta que nos puede generar números negativos, fácil, usamos el abs:

1
2
3
4
5
SQL> SELECT ABS(DBMS_RANDOM.random) FROM dual;
 
ABS(DBMS_RANDOM.RANDOM)
-----------------------
              705640851

Bueno pero queremos especificar el rango en el que estén esos números:

1
2
3
4
5
SQL> SELECT DBMS_RANDOM.VALUE(1,10) FROM dual;
 
DBMS_RANDOM.VALUE(1,10)
-----------------------
             4.41966315

Pero resulta que me regresa números con decimales, fácil, usamos el round:

1
2
3
4
5
SQL> SELECT ROUND(DBMS_RANDOM.VALUE(1,10)) FROM dual;
 
ROUND(DBMS_RANDOM.VALUE(1,10))
------------------------------
                             4

Podemos generar una cadena aleatoria:

1
2
3
4
5
SQL> SELECT DBMS_RANDOM.string('A', 12) FROM dual;
 
DBMS_RANDOM.STRING('A',12)
--------------------------------------------------
mQKXSkedaGpK

Aquí la explicación del primer parámetro, el segundo solo es la longitud de la cadena:

1
2
3
4
5
'a','A'  alpha characters only (mixed CASE)
'l','L'  LOWER CASE alpha characters only
'p','P'  ANY printable characters
'u','U'  UPPER CASE alpha characters only
'x','X'  ANY alpha-numeric characters (UPPER)

Y por ultimo la mejor, podemos obtener un registro aleatorio de una tabla, solo es necesario sustituir “id_campo” por el campo llave de su tabla y por supuesto “mitabla” por el nombre real de su tabla:

1
2
3
4
5
SELECT id_campo
  FROM (SELECT id_campo
          FROM mitabla
      ORDER BY DBMS_RANDOM.VALUE)
 WHERE ROWNUM = 1

Pero bueno, esa consulta solo me regresa un id, quiero todo el registro, fácil:

1
2
3
4
5
6
7
SELECT *
  FROM mitabla mit,
       (SELECT id_campo
          FROM mitabla
      ORDER BY DBMS_RANDOM.VALUE) idv
 WHERE mit.id_campo = idv.id_campo
   AND ROWNUM = 1
Sin comentarios Email Imprimir
1 Estrella2 Estrellas3 Estrellas4 Estrellas5 Estrellas (1 valoraciones, media: 5.00 de 5)
Loading ... Loading ...

Cadena a tabla en Oracle

Hace algunos días en mi actual proyecto se presento la necesidad de mostrar la información de una cadena pero en forma de tabular.

Al principio no se me ocurría como, pero rascandole un poquito a google di con la solución, estoy trabajando bajo una 10g por lo que no estoy seguro que funcione con versiones anteriores de Oracle.

Primero creamos un “TYPE” que usara la función que después crearemos:

1
CREATE OR REPLACE TYPE str2tblType AS TABLE OF VARCHAR2(500);

Después creamos la función que se encarga de convertir la cadena a una tabla de datos:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
CREATE OR REPLACE FUNCTION 
   str2tbl( p_str IN VARCHAR2, p_delim IN VARCHAR2 DEFAULT ',' ) 
    RETURN str2tblType
    PIPELINED AS
 
    l_str      VARCHAR2(500) DEFAULT p_str||p_delim;
    l_n        NUMBER;
 
BEGIN
 
    LOOP
        l_n := INSTR( l_str, p_delim );
        EXIT WHEN (NVL(l_n,0) = 0);
        pipe ROW( LTRIM(RTRIM(SUBSTR(l_str,1,l_n-1))) );
        l_str := SUBSTR( l_str, l_n+1 );
    END LOOP;
 
    RETURN;
END;

Por ultimo solo nos basta usarla:

1
SELECT COLUMN_VALUE col FROM TABLE(str2tbl('a,b,c'));

Como se darán cuenta utiliza cosas como los “TYPE” otra como “PIPELINED” y la función “table()” después del “from”, tal vez mas adelante hable de ellas, por el momento se los dejo de tarea.

Sin comentarios Email Imprimir
1 Estrella2 Estrellas3 Estrellas4 Estrellas5 Estrellas (1 valoraciones, media: 5.00 de 5)
Loading ... Loading ...

Adiós a las Botargas

Resulta que en España acaban de sacar una ley que prohíbe a los “hombres-anuncio”, esas personas que van por la ciudad cargando pancartas publicitarias en la espalda y en el pecho:

Hombre anuncio

Hombre anuncio

Aquí la noticia completa

Sus argumentos, como buen político mexicano no son del todo claros, “atentan contra la dignidad de las personas”, si estuviéramos en México los políticos hubieran dicho, “se convirtieron en un medio para que las empresas publicitarias no pagaran impuestos” o algo como “la ley dice que una persona no puede ser usada como medio publicitario por lo que se tendrán que regular todas estas actividades” o yéndonos mas lejos “Estas empresas atentan contra el libre transito de las personas al andar por la calle con esos anuncios”.

Todo a final de cuentas nos llevaría a la modificación de la ley para incluir un nuevo impuesto, aparte con nombre bien ingenioso, “impuesto sobre el uso del cuerpo humano con fines publicitarios”, a final de cuentas corroboraríamos que a los políticos les VL MD la dignidad de las personas como dicen, su fin con esto no sería otra mas que insertarnos (por no decir “meternos” y evitar la connotación sexual) otro impuesto mas a expensas, como siempre, de una buena causa para la sociedad.

Es que, en su punto de vista, y las botargas? A poco esas si serian “dignas para las personas”, a fin de cuentas sirven para el mismo fin, son un medio publicitario usando a una persona, y yéndonos mas lejos, usar una camisa o una gorra o tal vez un pantalón con una marca comercial, no tiene el mismo fin?

Pero bueno, ya no les voy a dar más ideas, así como son de ideosos al rato me van a salir con la sorpresa del nuevo “impuesto sobre botargas, exhibicionistas, extrovertidos y encueratrices” o algo así, al rato voy a salir a la calle y no le voy poder dar un patín a la botarga del “Don simi” o la de “barney” o la de “Bob esponja” etc. etc.

Botarga simi

Botarga simi


botarga barney

botarga barney


botarga bob esponja

botarga bob esponja

Sin comentarios Email Imprimir
1 Estrella2 Estrellas3 Estrellas4 Estrellas5 Estrellas (Sin Valorar)
Loading ... Loading ...

Quiero ser policía

Pero no piensen mal, no me refiero a esos “Polecias” de México, esos de “Academia” que ni hablar saben, esos puercos que deambulan por las calles nada mas viendo haber que se roban, esos corruptotes que al primer billete hasta te bailan, esos que ponen en las esquinas para “agilizar” el trafico y siempre acaban empeorándolo, esos que no conocen la palabra “Ética” ni “Moral” mucho menos “Honestidad” y un largo Etc. Etc.

No, lo que pasa es que navegando por las noticias de hoy por Internet, me topo con una que dice:

“La policía estatal italiana dispondrá para patrullar las calles de varios coches de lujo incautados a la Camorra, la mafia de la sureña región Campania, entre ellos, algunos Ferrari y Lamborghini, que se sumarán a otros vehículos de este tipo con los que ya cuentan las fuerzas de seguridad.”

Noticia completa

No pues así si me meto de Policía y nada mas para pasearme en un Ferrari o un Lamborghini, imagínate, que una persecución a toda velocidad, esperen yo lo persigo, que un operativo en tal lugar, bueno vamos pero yo los espero en el coche, que es hora de comer, vamos al automac y comemos en el coche, que es hora de ir a casa, yo me voy en el coche “para darle una lavadita”, que te peleas con tu mujer en la noche, no me voy a dormir al sillón me voy a dormir al coche.

Rascándole un poquito a google me tope con esta galería de fotos de autos de lujo de policía, y sorpresa, no son los primeros ni los únicos, ya las policías de Alemania, de Reino Unido, Holanda y varios países mas tienen patrullas con autos de lujo, que malibus ni que tsurus ni que platinas, no, Porches, Mercedes Benz, Ferraris, etc.

Sin comentarios Email Imprimir
1 Estrella2 Estrellas3 Estrellas4 Estrellas5 Estrellas (Sin Valorar)
Loading ... Loading ...

Planes Telcel Para el Iphone

No quería hablar del tema, pero ayer navegando por Internet me tope con los planes que ofrece AT&T para el apple iphone, al ver sus planes y ver los planes de telcel, te das cuenta de gran diferencia de precios que existe en la telefonía en México comparada con la telefonía de USA.

Este es solo por poner un ejemplo, incluso no se nota mucho la diferencia ya que los planes de AT&T también están caros (aprovechando el bum que tiene el equipo), pero aun así de caros son bastante mas baratos que los ofrecidos por telcel, y te puedo asegurar sin conocer a AT&T que tiene mucho mejor servicio que telcel, tan solo por el hecho de que en USA si se respetan los derechos de los consumidores, y si no, existen verdaderas instituciones que te respaldan para hacerlos valer, no como acá que tenemos nuestra “profeco” que solo sirve para perder el tiempo y como tapadera de las empresas.

Aprovechando el viaje también tendré que externar mi descontento para Jobs, cuando anunciaba la salida del iphone decía que sería mas barato que la generación anterior y no se que tantas cosas, al final mira con la que nos salio, extremadamente mas caro, casi el doble o mas que la anterior, lo bueno que el destino se la cobro con la casi inmediata salida al publico de problemas con el software que tuvieron que actualizar a la 2.0.1 poco después, a la 2.0.2 otros cuantos días mas y ahora con la ya inminente salida de la 2.1 no refleja mas que la baja calidad de su software.

Pero vallamos a las tarifas directamente, pongo imágenes por si me actualizan un link o la información, así no perder mi punto de referencia:

telcel planes iphone

telcel planes iphone


planes iphone att

planes iphone att

Ahora comparemos, tomare de ejemplo el mas “alto” ofrecido por telcel que llama “ilimitado” por que ofrece la conexión a Internet sin limites, pero en sus minutos incluidos ya no esta tan “ilimitado” solo ofrece 600 minutos, el que mas se acerca según estos parámetros de at&t es el de conexión ilimitada y 900 minutos por 89.99USD, al tipo de cambio de hoy (casi 11 pesos por 1 USD) nos da 989 pesos, son 400 pesos mas caro, con 200 minutos menos y otra gran diferencia at&t ofrece minutos por las noches y fines de semana ilimitados.

Ya con esta información solo es necesario sacar cuentas para saber que tanto mas nos cuesta la “última tecnología” en México en comparación con nuestros vecinos del norte, en este caso gracias al monopolio y a la libertad que tienen las empresas para hacer lo que quieren y los mejor de todo, muchas de ellas sin pagar impuestos.

Sin comentarios Email Imprimir
1 Estrella2 Estrellas3 Estrellas4 Estrellas5 Estrellas (Sin Valorar)
Loading ... Loading ...

Pagina 4 de 24« Primera...«3456»...Ultima »