Si queremos comenzar desde 0 el contador de un campo Identidad en una tabla tendremos que escribir lo siguiente:
DBCC CHECKIDENT (nombreTabla, RESEED, valor_a_inicializar)
Algunas vescesnos encontramos con una select de este tipo:
SELECT CASE WHEN campo1 = 1 THEN 'R'
CASE WHEN campo1 = 2 THEN 'Y'
ELSE 'T' as 'Value'
FROM TABLA
WHERE Value = 'R'
Esto nos dará un error de columna invalida (campo Value)
Se debe a que sql Server evalua en el siguiente orden:
Con lo cual al intentar evaluar el WHERE antes que la SELECT da un error de campo desconocido. Para solucionar esto existe un truco sencillo:
SELECT T.* FROM (SELECT CASE WHEN campo1 = 1 THEN 'R'
CASE WHEN campo1 = 2 THEN 'Y'
ELSE 'T' END as 'Value', campo2, campo3, campo4
FROM TABLA) as T
WHERE T.Value = 'R'
Escrito en Sql-Server, Transact SQL | Etiquetas:Campo calculado, CASE, SELECT ANIDADA, WHERE, WHERE COMPLEJO

Como se puede ver en el ejemplo el CommandType es de tipo Text y para recuperar los valores de la tabla
devuelta por la función se utiliza una select del udf. Luego cargamos los datos en una datareader y los vamos añadiendo junto con los metadatos al Datatable resul que es el que tiene el resultado final.
Escrito en ADO .Net, User Defined Functions | Etiquetas:ADO .Net, DataReader, DataTable, UDF
Existe una limitación en SQLServer 2000 para poder recuperar la fecha del sistema ya que no se admiten las funciones normales como: COURRENT_TIMESTAMP o GETDATE() ….y se produce un error al usarlos.
CREATE FUNCTION dbo.addDay()
RETURNS DATETIME
AS
BEGIN
DECLARE @dt DATETIME
SET @dt = DATEADD(DAY, 1, GETDATE())
RETURN @dt
END
Esto daría un error al grbar la función. Para solucionarlo podemos utilizar lo siguiente:
Creamos una vista de este modo.. y la podremos llamar con un SELECT VAL FROM V_DATE
CREATE VIEW V_DATE AS SELECT GETDATE() VAL
Escrito en User Defined Functions
Existen varias formas de hacerlo.
La primera y más sencilla….
CREATE FUNCTION getClientesCoincidentes(@parametro1 smallint)
RETURNS TABLE
AS
RETURN (SELECT campo1, campo2 FROM miTabla WHERE campo3 = @parametro1)
Aquí se devuelve la Tabla sin definir para nada el resultado.
En este Ejemplo le daremos formato a los campos de salida (Esto es muy útil si vamos a
utilizar esta función con algún lenguaje de programación como c# en mi caso, ya quelos
parámetros llegan totalmente definidos….
CREATE FUNCTION getClientesCoincidentes(@empresa smallint)
RETURNS @Clientes TABLE (cliente int primary key, nombre varchar(128))
AS
BEGIN
INSERT @Clientes values(1, ‘Chirila’);
INSERT @Clientes values(2, ‘Pesquete’);
INSERT @Clientes values(3, ‘Macuan’);
RETURN
END
Además de definir la Tabla resultante y todos sus campos, insertaremos los registros
a devolver por el sistema.
Para hacer una llamada desde Transac SQL sería así:
SELECT * FROM dbo.getClientesCoincidentes(1)
Para recuperar estos valores desde .Net aquí tenemos un ejemplo
PD: Este editor es una basura, haber si voy mejorando mis entradas….
Escrito en User Defined Functions
Este es un patrón muy utilizado que se usa para conseguir que únicamente se pueda acceder a una instancia de una determinada clase.
Un ejemplo.
public class MiClase
{
#region Patrón Singleton
static MiClase instance = null;
public static MiClase Instance
{
get
{
if (instance == null)
{
instance = new MiClase();
}
return instance;
}
}
#endregion
}
private MiClase()
{
InitializeComponent();
}
Nota importante: El constructor de la clase ha de ser privado, para no poder hacer una instancia de la forma tradicional.
Ahora se hará de este modo:
MiClase boo = MiClase.Instance;
Escrito en Patrones