jueves, 29 de diciembre de 2011

Como comentar código con VI



Para comentar varias lineas de código fuente en VI, se usa la siguiente orden (ejemplificada):


:4,18 s/^/# /

De acuerdo al ejemplo. Se inserta el símbolo # desde la fila 4 hasta la 18. Dependiendo del lenguaje en que estés programando el carácter # lo puedes reemplazar por el que corresponda a comentarios.

Para mostrar los números de lineas se usa:
:set nu


No such file or directory



No such file or directory . Es un error que parece evidente, pero al mismo tiempo desconcierta. Sobre todo si vez el código y este esta bien escrito.

Me ocurrió con una shell, la cual tiene que acceder a un directorio y ejecutar desde ese lugar otras shell. Y al momento de ejecutar: cd directorio , aparecía este error.

Lo que no les he comentado es que la shell la escribí en Windows y luego la pase al entorno de trabajo Linux. De ahí que la solución pase por cambiar el formato del archivo, con las instrucciones que detallo a continuación:

Abrir el archivo con vi o vim.
vi archivo

Aplicar formato unix.
:set fileformat=unix

:wq!

o bien, desde la consola
dos2unix archivo

Si te encuentras con este error, verifica que sea el formato.

miércoles, 28 de diciembre de 2011

ORA-01858 - se ha encontrado un carácter no numérico (Solucionado)


Me encontré con este error: ORA-01858. Al hacer una comparación de fechas.

ORA-01858: se ha encontrado un carácter no numérico donde se esperaba uno numérico
01858. 00000 -  "a non-numeric character was found where a numeric was expected"
*Cause:    The input data to be converted using a date format model was
           incorrect.  The input data did not contain a number where a number was
           required by the format model.
*Action:   Fix the input data or the date format model to make sure the
           elements match in number and type.  Then retry the operation.


 En la consulta uso lo siguiente:
..
WHERE TO_DATE(DEACTIVATION_DATE,'DDMMYY')=TO_DATE(SYSDATE,'DDMMYY')-1;

La causa de este error, es que dado el formato,  no se encuentran los valores numéricos en el lugar que son requeridos.

Y la solución es formatear correctamente las fechas:
..
WHERE TO_DATE(DEACTIVATION_DATE,'dd-mm-yy')=TO_DATE(SYSDATE,'dd-mm-yy')-1;    



martes, 20 de diciembre de 2011

ISNULL EN ORACLE - Reemplazar valores nulos



Tengo mas experiencia trabajando en MS SQL y en MYSQL que en Oracle (soy novato) por lo mismo al momento de necesitar hacer algo se me viene a la mente como es en MS SQL / MYSQL y pienso que puede haber varios en una situación similar.

En MS SQL existe la función ISNULL para reemplazar valores nulos, ejemplo:
SELECT Campo1, ISNULL(Campo2, '0') FROM Tabla 


En MySQL la función es:
SELECT Campo1,  COALESCE (Campo2, '0') FROM Tabla 


En Oracle, la función es NVL, ejemplo:
SELECT Campo1, NVL(Campo2, '0') FROM Tabla 


Lo que hacen estas funciones es reemplazar el valor nulo si existe por el que se le indica.













domingo, 18 de diciembre de 2011

Conectarse a Internet desde Fluxbox

Uso Fluxbox cuando ejecuto maquinas virtuales en Ubuntu. Básicamente por que es un escritorio ligero, que no ocupa muchas recursos. El problema es que cuando lo uso me quedo sin Internet, cosa que sin duda le ocurre a todos los que usan Fluxbox. Para ejecutar  network manager se debe ejecutar el siguiente comando en una consola:

sudo nm-applet &

Sitio de Fluxbox
http://j.gs/Tya

domingo, 11 de diciembre de 2011

Dividir la pantalla en VI






Dividir la pantalla
:split   (horizontalmente)
:vsplit  (verticalmente)

:split 
:vsplit 

Nueva división vacía
:new       (crea ventana horizontal vacía)
:vnew     (crea ventana vertical vacía)

Para cambiar el foco a otra ventana
CTRL + W

Para dejar el espacio actual y cerrar todas los demás
:only



sábado, 10 de diciembre de 2011

Buscar Texto en un Archivo con VI


Para buscar texto en VI se usan las siguientes instrucciones:

:/texto_a_buscar
:?texto_a_buscar

:/texto_a_buscar 
busca hacia abajo del documento texto_a_buscar

:?texto_a_buscar 
busca hacia arriba del documento  texto_a_buscar

Para avanzar en los resultados de la búsqueda se debe presionar la tecla n


domingo, 4 de diciembre de 2011

Crear tabla desde un select en Oracle


Crear una tabla a partir de una consulta es muy sencillo en Oracle.
En el ejemplo, que agrego a continuación se ve claramente que primero se debe indicar que se crea una tabla:
CREATE TABLE AS y a continuación el SELECT entre paréntesis.


CREATE TABLE subtelefono AS
(SELECT TELEFONO, IMEI FROM TELEFONOS);



sp_helptext en Oracle o Ver código de un procedimiento



Para quienes están mas familiarizados con MS SQL, cuando trabajen en Oracle estarán buscando un función para obtener el código de algún procedimiento como es sp_helptext. Encontré esta sentencia que cumple con esta función:

SELECT TEXT FROM ALL_SOURCE WHERE NAME='MOSTRAR_DATOS' ORDER BY LINE;

donde MOSTRAR_DATOS , es el nombre del procedimiento que se quiere obtener el código.

En la imagen que adjunto, primero creo el procedimiento y luego obtengo el mismo código con la sentencia antes mencionada.


sábado, 3 de diciembre de 2011

Vi - Mostrar números de linea


Para mostrar los números de linea en el editor VI (VIM), se puede usar:

:set number 


:set nu

Para des habilitar la numeración:

:set nu!







jueves, 1 de diciembre de 2011

Oracle - Too many values ORA-00913




Estaba tratando de hacer una inserción a partir de un SELECT y me apareció este error: 

Error SQL: ORA-00913: demasiados valores 00913. 00000 - "too many values"
El error en mi caso consistía en la siguiente trivialidad:

INSERT INTO CopiaTELEFONOS (campo1, campo2, campo3)
SELECT campo1, campo2 FROM TELEFONOS;

Tenia mas campos en la primera sentencia que en la segunda donde seleccionaba los campos.
El select es de ejemplo, no es que use esos nombres para las tablas. El caso real se trataba de una tabla con decenas de campos.