sábado, 21 de abril de 2012

Comprobar si un campo es numérico [Oracle]

Problema: Tenemos un campo cuyo tipo es alfanumérico, pero que es usado tanto para almacenar valores numéricos como alfabéticos (o sea, letras y números vamos). Queremos hacer una consulta que nos compruebe cuándo en ese campo hay un valor numérico propiamente dicho y cuándo no.


En Oracle, hasta donde yo sé y por lo que he investigado por ahí, no hay una función que nos sirva expresamente para esto, sin embargo sí que podemos hacer algún ‘apaño’. En Internete podemos encontrar varios, pero de todos ellos, el que más me convence por sencillo y efectivo es el sgte:


TRANSLATE(nombre_campo,'T 0123456789','T') is null

Uso de Exceptions en Script SQL Server

SQL Server 2005 y posterior posee un mecanismo de manejo de excepciones en un formato de bloque TRY/CATCH. Se debe escribir el código a ejecutar dentro del bloque TRY (BEGIN TRY - END TRY), el cual debe estar seguido de un bloque CATCH (BEGIN CATCH - END CATCH) en el cual se incluye el código de manejo de excepciones. Al ejecutar el bloque TRY, si no ocurre ningún error, se pasa el control a la primera sentencia siguiente al bloque CATCH, en caso de que ocurriese algún error se pasa el control a la primera sentencia dentro del bloque CATCH.



BEGIN TRY

     INSERT INTO Sales.Currency(CurrencyCode, Name, ModifiedDate )

     VALUES('LAE','Pol','01/06/2005')

     PRINT 'Inserción completada con exito.'

END TRY

BEGIN CATCH

     PRINT 'Inserción fallida.' 

END CATCH

Tabla País para SQL Server

Esta es la tabla de país para una base de datos de SQL Server


/****** Script para crear la tabla con todos los paises ******/


CREATE TABLE [DIC_Pais](
      [PK_ID] [int] NOT NULL,
      [ISONUM] [int] NOT NULL CONSTRAINT [DF__DIC_Pais__ISONUM__38EE7070] DEFAULT (''),
[ISO2] [nvarchar](2) COLLATE Latin1_General_CI_AI NOT NULL CONSTRAINT [DF__DIC_Pais__ISO2__39E294A9]  DEFAULT (''),
[ISO3] [nvarchar](3) COLLATE Latin1_General_CI_AI NOT NULL CONSTRAINT [DF__DIC_Pais__ISO3__3AD6B8E2]  DEFAULT (''),
[NOMBRE] [nvarchar](80) COLLATE Latin1_General_CI_AI NOT NULL CONSTRAINT [DF__DIC_Pais__NOMBRE__3BCADD1B]  DEFAULT (''), CONSTRAINT [PK_DIC_Pais]
PRIMARY KEY CLUSTERED
(
 [PK_ID] ASC
)WITH (PAD_INDEX  = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]

Trucos de Sql Server Reducir Base de Datos con SQL Server

Con una utilidad del Enterprise Manager del SQL Server podemos reducir el tamaño de una Base de Datos.

Cuando el tamaño físico de nuestra base de datos es superior al tamaño real de datos, es decir, cuando el volumen de datos ocupa 10 MB y la base de datos esta ocupando 100 MB es debido a que las modificaciones que realizamos en la base de datos. 

Cuando borramos un registro o otros objetos de la base de datos no se libera el espacio físico del disco y por ello no se reduce la base de datos.

Para reducir la base de datos:

  1. Ejecutar el Enterprise Manager
  2. Colocarnos encima de la base de datos a reducir
  3. Seleccionar la base de datos y apretar botón derecho del ratón y seleccionar la opción "todas las tareas" y "Shrink Database". 
  4. En el cuadro que aparece seleccionar "Move pages to beginning of file before shrinking"
  5. Pulsar Ok


Ya hemos reducido el tamaño de la base de datos.