Mostrando entradas con la etiqueta SQL SERVER. Mostrar todas las entradas
Mostrando entradas con la etiqueta SQL SERVER. Mostrar todas las entradas
viernes, 26 de agosto de 2011
Hoja de datos o formulario de SQL SERVER
Pues navengando por ahí me encontre este formulario de SQL SERVER el cual es sumamente útil.
viernes, 17 de diciembre de 2010
PadLeft en SQL SERVER
Desafortunadamente SQL SERVER 2008 y versiones anteriores no tiene esta función por lo que podríamos crear una consulta de la sig forma
La cual regresaría 00002
¿Cómo Funciona?
La función replicate duplica un carácter el número de veces que le indiquemos,
aplicamos la fórmula para determinar el tamaño de la replicación, esto sería
replicacion=longitud total del campo-longitud actual de la cadena de caracteres
una vez que obetenemos la replicación simplemente sumamos la cadena de carácteres
Ahora si se ocupa muchas veces podríamos hacer una función
La podemos probar de la sig. forma
SELECT dbo.PadLeft('9','0',5)
SELECT dbo.PadLeft('10','0',5)
--Util para manejo de folios
SELECT ISNULL(REPLICATE('0', 5 - len(ISNULL('2' ,0))), '') + '2'
La cual regresaría 00002
¿Cómo Funciona?
La función replicate duplica un carácter el número de veces que le indiquemos,
aplicamos la fórmula para determinar el tamaño de la replicación, esto sería
replicacion=longitud total del campo-longitud actual de la cadena de caracteres
una vez que obetenemos la replicación simplemente sumamos la cadena de carácteres
Ahora si se ocupa muchas veces podríamos hacer una función
CREATE FUNCTION [dbo].[PadLeft]
(@Secuencia varchar(16),
@caracter char(1),
@longitud int
)
RETURNS varchar(16) AS
BEGIN
DECLARE @curSeq varchar(16)
SELECT @curSeq = ISNULL(REPLICATE(@caracter, @longitud - len(ISNULL(@Secuencia ,0))), '') + @Secuencia
RETURN @curSeq
END
(@Secuencia varchar(16),
@caracter char(1),
@longitud int
)
RETURNS varchar(16) AS
BEGIN
DECLARE @curSeq varchar(16)
SELECT @curSeq = ISNULL(REPLICATE(@caracter, @longitud - len(ISNULL(@Secuencia ,0))), '') + @Secuencia
RETURN @curSeq
END
La podemos probar de la sig. forma
SELECT dbo.PadLeft('9','0',5)
SELECT dbo.PadLeft('10','0',5)
--Util para manejo de folios
martes, 16 de noviembre de 2010
Agregar, Eliminar Cambiar tipo de dato en columnas sql server
Para Agregar una columna
------------------------------
Para Eliminar una columna
------------------------------
ALTER TABLE table_name
DROP COLUMN column_name ------------------------------
Para cambiar tipo de datos
------------------------------
ALTER TABLE table_name
ALTER COLUMN column_name datatype
------------------------------
ALTER TABLE table_name
ADD column_name datatype
------------------------------ADD column_name datatype
Para Eliminar una columna
------------------------------
ALTER TABLE table_name
DROP COLUMN column_name ------------------------------
Para cambiar tipo de datos
------------------------------
ALTER TABLE table_name
ALTER COLUMN column_name datatype
viernes, 12 de noviembre de 2010
Identificar la llave primaria de una tabla(Primary Key)
Algunas veces debido a que las relaciones entre tablas no estan bien hechas es necesario conocer el nombre de la tabla que tiene un campo o columna identity, por ejemplo supongamos que tengo una tabla con un campo id_banco que hace referencia a otra tabla, desafortunadamente como no tengo una relación, esto no lo puedo ver en los diagramas, en un post anterior hice un store procedure que busca campos y texto buscar un campo en la base de datos, pero se pierde mucho tiempo bueno pues aquí dejo una consulta que a partir del nombre de la columna puede obtener el nombre de la tabla
SELECT
TC.TABLE_NAME,
TC.CONSTRAINT_NAME,
KCU.COLUMN_NAME,
KCU.ORDINAL_POSITION
FROM
INFORMATION_SCHEMA.TABLE_CONSTRAINTS TC
INNER JOIN
INFORMATION_SCHEMA.KEY_COLUMN_USAGE KCU
ON TC.CONSTRAINT_NAME = KCU.CONSTRAINT_NAME
WHERE
TC.CONSTRAINT_TYPE = 'PRIMARY KEY'
AND COLUMN_NAME='Id_Banco'
-- AND T.TABLE_NAME = 'table_name'
ORDER BY
TC.TABLE_NAME,
KCU.ORDINAL_POSITION
SELECT
TC.TABLE_NAME,
TC.CONSTRAINT_NAME,
KCU.COLUMN_NAME,
KCU.ORDINAL_POSITION
FROM
INFORMATION_SCHEMA.TABLE_CONSTRAINTS TC
INNER JOIN
INFORMATION_SCHEMA.KEY_COLUMN_USAGE KCU
ON TC.CONSTRAINT_NAME = KCU.CONSTRAINT_NAME
WHERE
TC.CONSTRAINT_TYPE = 'PRIMARY KEY'
AND COLUMN_NAME='Id_Banco'
-- AND T.TABLE_NAME = 'table_name'
ORDER BY
TC.TABLE_NAME,
KCU.ORDINAL_POSITION
lunes, 11 de octubre de 2010
Convertir numero a Texto en SQL SERVER
Continuando con el post anterior solo comente algunas líneas, y listo
--http://lafabricadesoftware.blogspot.com/
CREATE FUNCTION [dbo].[fn_numeroa_Texo](@Numero NUMERIC(20,2))
RETURNS VARCHAR(700)
BEGIN
DECLARE @letras VARCHAR(700)
DECLARE @lnEntero INT,
@lcRetorno VARCHAR(512),
@lnTerna INT,
@lcMiles VARCHAR(512),
@lcCadena VARCHAR(512),
@lnUnidades INT,
@lnDecenas INT,
@lnCentenas INT,
@lnFraccion INT
---Uso SELECT dbo.rh_fn_Dinero_a_Texo(200)
SELECT @lnEntero = CAST(@Numero AS INT),
@lnFraccion = (@Numero - @lnEntero) * 100,
@lcRetorno = '',
@lnTerna = 1
WHILE @lnEntero > 0
BEGIN /* WHILE */
-- Recorro columna por columna
SELECT @lcCadena = ''
SELECT @lnUnidades = @lnEntero % 10
SELECT @lnEntero = CAST(@lnEntero/10 AS INT)
SELECT @lnDecenas = @lnEntero % 10
SELECT @lnEntero = CAST(@lnEntero/10 AS INT)
SELECT @lnCentenas = @lnEntero % 10
SELECT @lnEntero = CAST(@lnEntero/10 AS INT)
-- Analizo las unidades
SELECT @lcCadena =
CASE /* UNIDADES */
WHEN @lnUnidades = 1 AND @lnTerna = 1 THEN 'UNO ' + @lcCadena
WHEN @lnUnidades = 1 AND @lnTerna <> 1 THEN 'UN ' + @lcCadena
WHEN @lnUnidades = 2 THEN 'DOS ' + @lcCadena
WHEN @lnUnidades = 3 THEN 'TRES ' + @lcCadena
WHEN @lnUnidades = 4 THEN 'CUATRO ' + @lcCadena
WHEN @lnUnidades = 5 THEN 'CINCO ' + @lcCadena
WHEN @lnUnidades = 6 THEN 'SEIS ' + @lcCadena
WHEN @lnUnidades = 7 THEN 'SIETE ' + @lcCadena
WHEN @lnUnidades = 8 THEN 'OCHO ' + @lcCadena
WHEN @lnUnidades = 9 THEN 'NUEVE ' + @lcCadena
ELSE @lcCadena
END /* UNIDADES */
-- Analizo las decenas
SELECT @lcCadena =
CASE /* DECENAS */
WHEN @lnDecenas = 1 THEN
CASE @lnUnidades
WHEN 0 THEN 'DIEZ '
WHEN 1 THEN 'ONCE '
WHEN 2 THEN 'DOCE '
WHEN 3 THEN 'TRECE '
WHEN 4 THEN 'CATORCE '
WHEN 5 THEN 'QUINCE '
ELSE 'DIECI' + @lcCadena
END
WHEN @lnDecenas = 2 AND @lnUnidades = 0 THEN 'VEINTE ' + @lcCadena
WHEN @lnDecenas = 2 AND @lnUnidades <> 0 THEN 'VEINTI' + @lcCadena
WHEN @lnDecenas = 3 AND @lnUnidades = 0 THEN 'TREINTA ' + @lcCadena
WHEN @lnDecenas = 3 AND @lnUnidades <> 0 THEN 'TREINTA Y ' + @lcCadena
WHEN @lnDecenas = 4 AND @lnUnidades = 0 THEN 'CUARENTA ' + @lcCadena
WHEN @lnDecenas = 4 AND @lnUnidades <> 0 THEN 'CUARENTA Y ' + @lcCadena
WHEN @lnDecenas = 5 AND @lnUnidades = 0 THEN 'CINCUENTA ' + @lcCadena
WHEN @lnDecenas = 5 AND @lnUnidades <> 0 THEN 'CINCUENTA Y ' + @lcCadena
WHEN @lnDecenas = 6 AND @lnUnidades = 0 THEN 'SESENTA ' + @lcCadena
WHEN @lnDecenas = 6 AND @lnUnidades <> 0 THEN 'SESENTA Y ' + @lcCadena
WHEN @lnDecenas = 7 AND @lnUnidades = 0 THEN 'SETENTA ' + @lcCadena
WHEN @lnDecenas = 7 AND @lnUnidades <> 0 THEN 'SETENTA Y ' + @lcCadena
WHEN @lnDecenas = 8 AND @lnUnidades = 0 THEN 'OCHENTA ' + @lcCadena
WHEN @lnDecenas = 8 AND @lnUnidades <> 0 THEN 'OCHENTA Y ' + @lcCadena
WHEN @lnDecenas = 9 AND @lnUnidades = 0 THEN 'NOVENTA ' + @lcCadena
WHEN @lnDecenas = 9 AND @lnUnidades <> 0 THEN 'NOVENTA Y ' + @lcCadena
ELSE @lcCadena
END /* DECENAS */
-- Analizo las centenas
SELECT @lcCadena =
CASE /* CENTENAS */
WHEN @lnCentenas = 1 AND @lnUnidades = 0 AND @lnDecenas = 0 THEN 'CIEN ' + @lcCadena
WHEN @lnCentenas = 1 AND NOT(@lnUnidades = 0 AND @lnDecenas = 0) THEN 'CIENTO ' + @lcCadena
WHEN @lnCentenas = 2 THEN 'DOSCIENTOS ' + @lcCadena
WHEN @lnCentenas = 3 THEN 'TRESCIENTOS ' + @lcCadena
WHEN @lnCentenas = 4 THEN 'CUATROCIENTOS ' + @lcCadena
WHEN @lnCentenas = 5 THEN 'QUINIENTOS ' + @lcCadena
WHEN @lnCentenas = 6 THEN 'SEISCIENTOS ' + @lcCadena
WHEN @lnCentenas = 7 THEN 'SETECIENTOS ' + @lcCadena
WHEN @lnCentenas = 8 THEN 'OCHOCIENTOS ' + @lcCadena
WHEN @lnCentenas = 9 THEN 'NOVECIENTOS ' + @lcCadena
ELSE @lcCadena
END /* CENTENAS */
-- Analizo los millares
SELECT @lcCadena =
CASE /* TERNA */
WHEN @lnTerna = 1 THEN @lcCadena
WHEN @lnTerna = 2 AND (@lnUnidades + @lnDecenas + @lnCentenas <> 0) THEN @lcCadena + ' MIL '
WHEN @lnTerna = 3 AND (@lnUnidades + @lnDecenas + @lnCentenas <> 0) AND
@lnUnidades = 1 AND @lnDecenas = 0 AND @lnCentenas = 0 THEN @lcCadena + ' MILLON '
WHEN @lnTerna = 3 AND (@lnUnidades + @lnDecenas + @lnCentenas <> 0) AND
NOT (@lnUnidades = 1 AND @lnDecenas = 0 AND @lnCentenas = 0) THEN @lcCadena + ' MILLONES '
WHEN @lnTerna = 4 AND (@lnUnidades + @lnDecenas + @lnCentenas <> 0) THEN @lcCadena + ' MIL MILLONES '
ELSE ''
END /* MILLARES */
-- Armo el retorno columna a columna
SELECT @lcRetorno = @lcCadena + @lcRetorno
SELECT @lnTerna = @lnTerna + 1
END /* WHILE */
IF @lnTerna = 1
SELECT @lcRetorno = 'CERO'
SELECT @letras=RTRIM(@lcRetorno)
--SELECT @letras=RTRIM(@lcRetorno) + ' PESOS ' + CASE WHEN LEN(LTRIM(STR(@lnFraccion,2))) = 1 THEN '0'+LTRIM(STR(@lnFraccion,2))
-- ELSE LTRIM(STR(@lnFraccion,2)) END + ' CENTAVOS M.N.'
RETURN @letras
END
RETURNS VARCHAR(700)
BEGIN
DECLARE @letras VARCHAR(700)
DECLARE @lnEntero INT,
@lcRetorno VARCHAR(512),
@lnTerna INT,
@lcMiles VARCHAR(512),
@lcCadena VARCHAR(512),
@lnUnidades INT,
@lnDecenas INT,
@lnCentenas INT,
@lnFraccion INT
---Uso SELECT dbo.rh_fn_Dinero_a_Texo(200)
SELECT @lnEntero = CAST(@Numero AS INT),
@lnFraccion = (@Numero - @lnEntero) * 100,
@lcRetorno = '',
@lnTerna = 1
WHILE @lnEntero > 0
BEGIN /* WHILE */
-- Recorro columna por columna
SELECT @lcCadena = ''
SELECT @lnUnidades = @lnEntero % 10
SELECT @lnEntero = CAST(@lnEntero/10 AS INT)
SELECT @lnDecenas = @lnEntero % 10
SELECT @lnEntero = CAST(@lnEntero/10 AS INT)
SELECT @lnCentenas = @lnEntero % 10
SELECT @lnEntero = CAST(@lnEntero/10 AS INT)
-- Analizo las unidades
SELECT @lcCadena =
CASE /* UNIDADES */
WHEN @lnUnidades = 1 AND @lnTerna = 1 THEN 'UNO ' + @lcCadena
WHEN @lnUnidades = 1 AND @lnTerna <> 1 THEN 'UN ' + @lcCadena
WHEN @lnUnidades = 2 THEN 'DOS ' + @lcCadena
WHEN @lnUnidades = 3 THEN 'TRES ' + @lcCadena
WHEN @lnUnidades = 4 THEN 'CUATRO ' + @lcCadena
WHEN @lnUnidades = 5 THEN 'CINCO ' + @lcCadena
WHEN @lnUnidades = 6 THEN 'SEIS ' + @lcCadena
WHEN @lnUnidades = 7 THEN 'SIETE ' + @lcCadena
WHEN @lnUnidades = 8 THEN 'OCHO ' + @lcCadena
WHEN @lnUnidades = 9 THEN 'NUEVE ' + @lcCadena
ELSE @lcCadena
END /* UNIDADES */
-- Analizo las decenas
SELECT @lcCadena =
CASE /* DECENAS */
WHEN @lnDecenas = 1 THEN
CASE @lnUnidades
WHEN 0 THEN 'DIEZ '
WHEN 1 THEN 'ONCE '
WHEN 2 THEN 'DOCE '
WHEN 3 THEN 'TRECE '
WHEN 4 THEN 'CATORCE '
WHEN 5 THEN 'QUINCE '
ELSE 'DIECI' + @lcCadena
END
WHEN @lnDecenas = 2 AND @lnUnidades = 0 THEN 'VEINTE ' + @lcCadena
WHEN @lnDecenas = 2 AND @lnUnidades <> 0 THEN 'VEINTI' + @lcCadena
WHEN @lnDecenas = 3 AND @lnUnidades = 0 THEN 'TREINTA ' + @lcCadena
WHEN @lnDecenas = 3 AND @lnUnidades <> 0 THEN 'TREINTA Y ' + @lcCadena
WHEN @lnDecenas = 4 AND @lnUnidades = 0 THEN 'CUARENTA ' + @lcCadena
WHEN @lnDecenas = 4 AND @lnUnidades <> 0 THEN 'CUARENTA Y ' + @lcCadena
WHEN @lnDecenas = 5 AND @lnUnidades = 0 THEN 'CINCUENTA ' + @lcCadena
WHEN @lnDecenas = 5 AND @lnUnidades <> 0 THEN 'CINCUENTA Y ' + @lcCadena
WHEN @lnDecenas = 6 AND @lnUnidades = 0 THEN 'SESENTA ' + @lcCadena
WHEN @lnDecenas = 6 AND @lnUnidades <> 0 THEN 'SESENTA Y ' + @lcCadena
WHEN @lnDecenas = 7 AND @lnUnidades = 0 THEN 'SETENTA ' + @lcCadena
WHEN @lnDecenas = 7 AND @lnUnidades <> 0 THEN 'SETENTA Y ' + @lcCadena
WHEN @lnDecenas = 8 AND @lnUnidades = 0 THEN 'OCHENTA ' + @lcCadena
WHEN @lnDecenas = 8 AND @lnUnidades <> 0 THEN 'OCHENTA Y ' + @lcCadena
WHEN @lnDecenas = 9 AND @lnUnidades = 0 THEN 'NOVENTA ' + @lcCadena
WHEN @lnDecenas = 9 AND @lnUnidades <> 0 THEN 'NOVENTA Y ' + @lcCadena
ELSE @lcCadena
END /* DECENAS */
-- Analizo las centenas
SELECT @lcCadena =
CASE /* CENTENAS */
WHEN @lnCentenas = 1 AND @lnUnidades = 0 AND @lnDecenas = 0 THEN 'CIEN ' + @lcCadena
WHEN @lnCentenas = 1 AND NOT(@lnUnidades = 0 AND @lnDecenas = 0) THEN 'CIENTO ' + @lcCadena
WHEN @lnCentenas = 2 THEN 'DOSCIENTOS ' + @lcCadena
WHEN @lnCentenas = 3 THEN 'TRESCIENTOS ' + @lcCadena
WHEN @lnCentenas = 4 THEN 'CUATROCIENTOS ' + @lcCadena
WHEN @lnCentenas = 5 THEN 'QUINIENTOS ' + @lcCadena
WHEN @lnCentenas = 6 THEN 'SEISCIENTOS ' + @lcCadena
WHEN @lnCentenas = 7 THEN 'SETECIENTOS ' + @lcCadena
WHEN @lnCentenas = 8 THEN 'OCHOCIENTOS ' + @lcCadena
WHEN @lnCentenas = 9 THEN 'NOVECIENTOS ' + @lcCadena
ELSE @lcCadena
END /* CENTENAS */
-- Analizo los millares
SELECT @lcCadena =
CASE /* TERNA */
WHEN @lnTerna = 1 THEN @lcCadena
WHEN @lnTerna = 2 AND (@lnUnidades + @lnDecenas + @lnCentenas <> 0) THEN @lcCadena + ' MIL '
WHEN @lnTerna = 3 AND (@lnUnidades + @lnDecenas + @lnCentenas <> 0) AND
@lnUnidades = 1 AND @lnDecenas = 0 AND @lnCentenas = 0 THEN @lcCadena + ' MILLON '
WHEN @lnTerna = 3 AND (@lnUnidades + @lnDecenas + @lnCentenas <> 0) AND
NOT (@lnUnidades = 1 AND @lnDecenas = 0 AND @lnCentenas = 0) THEN @lcCadena + ' MILLONES '
WHEN @lnTerna = 4 AND (@lnUnidades + @lnDecenas + @lnCentenas <> 0) THEN @lcCadena + ' MIL MILLONES '
ELSE ''
END /* MILLARES */
-- Armo el retorno columna a columna
SELECT @lcRetorno = @lcCadena + @lcRetorno
SELECT @lnTerna = @lnTerna + 1
END /* WHILE */
IF @lnTerna = 1
SELECT @lcRetorno = 'CERO'
SELECT @letras=RTRIM(@lcRetorno)
--SELECT @letras=RTRIM(@lcRetorno) + ' PESOS ' + CASE WHEN LEN(LTRIM(STR(@lnFraccion,2))) = 1 THEN '0'+LTRIM(STR(@lnFraccion,2))
-- ELSE LTRIM(STR(@lnFraccion,2)) END + ' CENTAVOS M.N.'
RETURN @letras
END
Ejemplo de uso:
SELECT dbo.fn_numeroa_Texo(778)
Convertir dinero o moneda a Texto en SQLSERVER
Alguna vez necesite utilizar un sp que me convertiera una cantidad expresada en dinero a texto, pues encontre una store procedure que hacía esto no recuerdo de que página copie el código, pero bueno lo converti en una función escalar esperando que sea de ayuda
SELECT dbo.fn_Dinero_a_Texo(55250.55)
--http://lafabricadesoftware.blogspot.com/
CREATE FUNCTION [dbo].[fn_Dinero_a_Texo](@Numero NUMERIC(20,2))
RETURNS VARCHAR(700)
BEGIN
DECLARE @letras VARCHAR(700)
DECLARE @lnEntero INT,
@lcRetorno VARCHAR(512),
@lnTerna INT,
@lcMiles VARCHAR(512),
@lcCadena VARCHAR(512),
@lnUnidades INT,
@lnDecenas INT,
@lnCentenas INT,
@lnFraccion INT
---Uso SELECT dbo.rh_fn_Dinero_a_Texo(200)
SELECT @lnEntero = CAST(@Numero AS INT),
@lnFraccion = (@Numero - @lnEntero) * 100,
@lcRetorno = '',
@lnTerna = 1
WHILE @lnEntero > 0
BEGIN /* WHILE */
-- Recorro columna por columna
SELECT @lcCadena = ''
SELECT @lnUnidades = @lnEntero % 10
SELECT @lnEntero = CAST(@lnEntero/10 AS INT)
SELECT @lnDecenas = @lnEntero % 10
SELECT @lnEntero = CAST(@lnEntero/10 AS INT)
SELECT @lnCentenas = @lnEntero % 10
SELECT @lnEntero = CAST(@lnEntero/10 AS INT)
-- Analizo las unidades
SELECT @lcCadena =
CASE /* UNIDADES */
WHEN @lnUnidades = 1 AND @lnTerna = 1 THEN 'UNO ' + @lcCadena
WHEN @lnUnidades = 1 AND @lnTerna <> 1 THEN 'UN ' + @lcCadena
WHEN @lnUnidades = 2 THEN 'DOS ' + @lcCadena
WHEN @lnUnidades = 3 THEN 'TRES ' + @lcCadena
WHEN @lnUnidades = 4 THEN 'CUATRO ' + @lcCadena
WHEN @lnUnidades = 5 THEN 'CINCO ' + @lcCadena
WHEN @lnUnidades = 6 THEN 'SEIS ' + @lcCadena
WHEN @lnUnidades = 7 THEN 'SIETE ' + @lcCadena
WHEN @lnUnidades = 8 THEN 'OCHO ' + @lcCadena
WHEN @lnUnidades = 9 THEN 'NUEVE ' + @lcCadena
ELSE @lcCadena
END /* UNIDADES */
-- Analizo las decenas
SELECT @lcCadena =
CASE /* DECENAS */
WHEN @lnDecenas = 1 THEN
CASE @lnUnidades
WHEN 0 THEN 'DIEZ '
WHEN 1 THEN 'ONCE '
WHEN 2 THEN 'DOCE '
WHEN 3 THEN 'TRECE '
WHEN 4 THEN 'CATORCE '
WHEN 5 THEN 'QUINCE '
ELSE 'DIECI' + @lcCadena
END
WHEN @lnDecenas = 2 AND @lnUnidades = 0 THEN 'VEINTE ' + @lcCadena
WHEN @lnDecenas = 2 AND @lnUnidades <> 0 THEN 'VEINTI' + @lcCadena
WHEN @lnDecenas = 3 AND @lnUnidades = 0 THEN 'TREINTA ' + @lcCadena
WHEN @lnDecenas = 3 AND @lnUnidades <> 0 THEN 'TREINTA Y ' + @lcCadena
WHEN @lnDecenas = 4 AND @lnUnidades = 0 THEN 'CUARENTA ' + @lcCadena
WHEN @lnDecenas = 4 AND @lnUnidades <> 0 THEN 'CUARENTA Y ' + @lcCadena
WHEN @lnDecenas = 5 AND @lnUnidades = 0 THEN 'CINCUENTA ' + @lcCadena
WHEN @lnDecenas = 5 AND @lnUnidades <> 0 THEN 'CINCUENTA Y ' + @lcCadena
WHEN @lnDecenas = 6 AND @lnUnidades = 0 THEN 'SESENTA ' + @lcCadena
WHEN @lnDecenas = 6 AND @lnUnidades <> 0 THEN 'SESENTA Y ' + @lcCadena
WHEN @lnDecenas = 7 AND @lnUnidades = 0 THEN 'SETENTA ' + @lcCadena
WHEN @lnDecenas = 7 AND @lnUnidades <> 0 THEN 'SETENTA Y ' + @lcCadena
WHEN @lnDecenas = 8 AND @lnUnidades = 0 THEN 'OCHENTA ' + @lcCadena
WHEN @lnDecenas = 8 AND @lnUnidades <> 0 THEN 'OCHENTA Y ' + @lcCadena
WHEN @lnDecenas = 9 AND @lnUnidades = 0 THEN 'NOVENTA ' + @lcCadena
WHEN @lnDecenas = 9 AND @lnUnidades <> 0 THEN 'NOVENTA Y ' + @lcCadena
ELSE @lcCadena
END /* DECENAS */
-- Analizo las centenas
SELECT @lcCadena =
CASE /* CENTENAS */
WHEN @lnCentenas = 1 AND @lnUnidades = 0 AND @lnDecenas = 0 THEN 'CIEN ' + @lcCadena
WHEN @lnCentenas = 1 AND NOT(@lnUnidades = 0 AND @lnDecenas = 0) THEN 'CIENTO ' + @lcCadena
WHEN @lnCentenas = 2 THEN 'DOSCIENTOS ' + @lcCadena
WHEN @lnCentenas = 3 THEN 'TRESCIENTOS ' + @lcCadena
WHEN @lnCentenas = 4 THEN 'CUATROCIENTOS ' + @lcCadena
WHEN @lnCentenas = 5 THEN 'QUINIENTOS ' + @lcCadena
WHEN @lnCentenas = 6 THEN 'SEISCIENTOS ' + @lcCadena
WHEN @lnCentenas = 7 THEN 'SETECIENTOS ' + @lcCadena
WHEN @lnCentenas = 8 THEN 'OCHOCIENTOS ' + @lcCadena
WHEN @lnCentenas = 9 THEN 'NOVECIENTOS ' + @lcCadena
ELSE @lcCadena
END /* CENTENAS */
-- Analizo los millares
SELECT @lcCadena =
CASE /* TERNA */
WHEN @lnTerna = 1 THEN @lcCadena
WHEN @lnTerna = 2 AND (@lnUnidades + @lnDecenas + @lnCentenas <> 0) THEN @lcCadena + ' MIL '
WHEN @lnTerna = 3 AND (@lnUnidades + @lnDecenas + @lnCentenas <> 0) AND
@lnUnidades = 1 AND @lnDecenas = 0 AND @lnCentenas = 0 THEN @lcCadena + ' MILLON '
WHEN @lnTerna = 3 AND (@lnUnidades + @lnDecenas + @lnCentenas <> 0) AND
NOT (@lnUnidades = 1 AND @lnDecenas = 0 AND @lnCentenas = 0) THEN @lcCadena + ' MILLONES '
WHEN @lnTerna = 4 AND (@lnUnidades + @lnDecenas + @lnCentenas <> 0) THEN @lcCadena + ' MIL MILLONES '
ELSE ''
END /* MILLARES */
-- Armo el retorno columna a columna
SELECT @lcRetorno = @lcCadena + @lcRetorno
SELECT @lnTerna = @lnTerna + 1
END /* WHILE */
IF @lnTerna = 1
SELECT @lcRetorno = 'CERO'
SELECT @letras=RTRIM(@lcRetorno) + ' PESOS (' + CASE WHEN LEN(LTRIM(STR(@lnFraccion,2))) = 1 THEN '0'+LTRIM(STR(@lnFraccion,2))
ELSE LTRIM(STR(@lnFraccion,2)) END + '/100) M.N.'
--SELECT @letras=RTRIM(@lcRetorno) + ' PESOS ' + CASE WHEN LEN(LTRIM(STR(@lnFraccion,2))) = 1 THEN '0'+LTRIM(STR(@lnFraccion,2))
-- ELSE LTRIM(STR(@lnFraccion,2)) END + ' CENTAVOS M.N.'
RETURN @letras
END
Ejemplo de usoRETURNS VARCHAR(700)
BEGIN
DECLARE @letras VARCHAR(700)
DECLARE @lnEntero INT,
@lcRetorno VARCHAR(512),
@lnTerna INT,
@lcMiles VARCHAR(512),
@lcCadena VARCHAR(512),
@lnUnidades INT,
@lnDecenas INT,
@lnCentenas INT,
@lnFraccion INT
---Uso SELECT dbo.rh_fn_Dinero_a_Texo(200)
SELECT @lnEntero = CAST(@Numero AS INT),
@lnFraccion = (@Numero - @lnEntero) * 100,
@lcRetorno = '',
@lnTerna = 1
WHILE @lnEntero > 0
BEGIN /* WHILE */
-- Recorro columna por columna
SELECT @lcCadena = ''
SELECT @lnUnidades = @lnEntero % 10
SELECT @lnEntero = CAST(@lnEntero/10 AS INT)
SELECT @lnDecenas = @lnEntero % 10
SELECT @lnEntero = CAST(@lnEntero/10 AS INT)
SELECT @lnCentenas = @lnEntero % 10
SELECT @lnEntero = CAST(@lnEntero/10 AS INT)
-- Analizo las unidades
SELECT @lcCadena =
CASE /* UNIDADES */
WHEN @lnUnidades = 1 AND @lnTerna = 1 THEN 'UNO ' + @lcCadena
WHEN @lnUnidades = 1 AND @lnTerna <> 1 THEN 'UN ' + @lcCadena
WHEN @lnUnidades = 2 THEN 'DOS ' + @lcCadena
WHEN @lnUnidades = 3 THEN 'TRES ' + @lcCadena
WHEN @lnUnidades = 4 THEN 'CUATRO ' + @lcCadena
WHEN @lnUnidades = 5 THEN 'CINCO ' + @lcCadena
WHEN @lnUnidades = 6 THEN 'SEIS ' + @lcCadena
WHEN @lnUnidades = 7 THEN 'SIETE ' + @lcCadena
WHEN @lnUnidades = 8 THEN 'OCHO ' + @lcCadena
WHEN @lnUnidades = 9 THEN 'NUEVE ' + @lcCadena
ELSE @lcCadena
END /* UNIDADES */
-- Analizo las decenas
SELECT @lcCadena =
CASE /* DECENAS */
WHEN @lnDecenas = 1 THEN
CASE @lnUnidades
WHEN 0 THEN 'DIEZ '
WHEN 1 THEN 'ONCE '
WHEN 2 THEN 'DOCE '
WHEN 3 THEN 'TRECE '
WHEN 4 THEN 'CATORCE '
WHEN 5 THEN 'QUINCE '
ELSE 'DIECI' + @lcCadena
END
WHEN @lnDecenas = 2 AND @lnUnidades = 0 THEN 'VEINTE ' + @lcCadena
WHEN @lnDecenas = 2 AND @lnUnidades <> 0 THEN 'VEINTI' + @lcCadena
WHEN @lnDecenas = 3 AND @lnUnidades = 0 THEN 'TREINTA ' + @lcCadena
WHEN @lnDecenas = 3 AND @lnUnidades <> 0 THEN 'TREINTA Y ' + @lcCadena
WHEN @lnDecenas = 4 AND @lnUnidades = 0 THEN 'CUARENTA ' + @lcCadena
WHEN @lnDecenas = 4 AND @lnUnidades <> 0 THEN 'CUARENTA Y ' + @lcCadena
WHEN @lnDecenas = 5 AND @lnUnidades = 0 THEN 'CINCUENTA ' + @lcCadena
WHEN @lnDecenas = 5 AND @lnUnidades <> 0 THEN 'CINCUENTA Y ' + @lcCadena
WHEN @lnDecenas = 6 AND @lnUnidades = 0 THEN 'SESENTA ' + @lcCadena
WHEN @lnDecenas = 6 AND @lnUnidades <> 0 THEN 'SESENTA Y ' + @lcCadena
WHEN @lnDecenas = 7 AND @lnUnidades = 0 THEN 'SETENTA ' + @lcCadena
WHEN @lnDecenas = 7 AND @lnUnidades <> 0 THEN 'SETENTA Y ' + @lcCadena
WHEN @lnDecenas = 8 AND @lnUnidades = 0 THEN 'OCHENTA ' + @lcCadena
WHEN @lnDecenas = 8 AND @lnUnidades <> 0 THEN 'OCHENTA Y ' + @lcCadena
WHEN @lnDecenas = 9 AND @lnUnidades = 0 THEN 'NOVENTA ' + @lcCadena
WHEN @lnDecenas = 9 AND @lnUnidades <> 0 THEN 'NOVENTA Y ' + @lcCadena
ELSE @lcCadena
END /* DECENAS */
-- Analizo las centenas
SELECT @lcCadena =
CASE /* CENTENAS */
WHEN @lnCentenas = 1 AND @lnUnidades = 0 AND @lnDecenas = 0 THEN 'CIEN ' + @lcCadena
WHEN @lnCentenas = 1 AND NOT(@lnUnidades = 0 AND @lnDecenas = 0) THEN 'CIENTO ' + @lcCadena
WHEN @lnCentenas = 2 THEN 'DOSCIENTOS ' + @lcCadena
WHEN @lnCentenas = 3 THEN 'TRESCIENTOS ' + @lcCadena
WHEN @lnCentenas = 4 THEN 'CUATROCIENTOS ' + @lcCadena
WHEN @lnCentenas = 5 THEN 'QUINIENTOS ' + @lcCadena
WHEN @lnCentenas = 6 THEN 'SEISCIENTOS ' + @lcCadena
WHEN @lnCentenas = 7 THEN 'SETECIENTOS ' + @lcCadena
WHEN @lnCentenas = 8 THEN 'OCHOCIENTOS ' + @lcCadena
WHEN @lnCentenas = 9 THEN 'NOVECIENTOS ' + @lcCadena
ELSE @lcCadena
END /* CENTENAS */
-- Analizo los millares
SELECT @lcCadena =
CASE /* TERNA */
WHEN @lnTerna = 1 THEN @lcCadena
WHEN @lnTerna = 2 AND (@lnUnidades + @lnDecenas + @lnCentenas <> 0) THEN @lcCadena + ' MIL '
WHEN @lnTerna = 3 AND (@lnUnidades + @lnDecenas + @lnCentenas <> 0) AND
@lnUnidades = 1 AND @lnDecenas = 0 AND @lnCentenas = 0 THEN @lcCadena + ' MILLON '
WHEN @lnTerna = 3 AND (@lnUnidades + @lnDecenas + @lnCentenas <> 0) AND
NOT (@lnUnidades = 1 AND @lnDecenas = 0 AND @lnCentenas = 0) THEN @lcCadena + ' MILLONES '
WHEN @lnTerna = 4 AND (@lnUnidades + @lnDecenas + @lnCentenas <> 0) THEN @lcCadena + ' MIL MILLONES '
ELSE ''
END /* MILLARES */
-- Armo el retorno columna a columna
SELECT @lcRetorno = @lcCadena + @lcRetorno
SELECT @lnTerna = @lnTerna + 1
END /* WHILE */
IF @lnTerna = 1
SELECT @lcRetorno = 'CERO'
SELECT @letras=RTRIM(@lcRetorno) + ' PESOS (' + CASE WHEN LEN(LTRIM(STR(@lnFraccion,2))) = 1 THEN '0'+LTRIM(STR(@lnFraccion,2))
ELSE LTRIM(STR(@lnFraccion,2)) END + '/100) M.N.'
--SELECT @letras=RTRIM(@lcRetorno) + ' PESOS ' + CASE WHEN LEN(LTRIM(STR(@lnFraccion,2))) = 1 THEN '0'+LTRIM(STR(@lnFraccion,2))
-- ELSE LTRIM(STR(@lnFraccion,2)) END + ' CENTAVOS M.N.'
RETURN @letras
END
SELECT dbo.fn_Dinero_a_Texo(55250.55)
jueves, 7 de octubre de 2010
Resetear o reiniciar una columna identity(autoincrementable) en SQL SERVER
Cuando se llega a eliminar todos los datos de una tabla y la columna es identity autoincrementable esta se queda con el ultimo valor del ultimo renglon insertado como se pude ver a continuación
DBCC CHECKIDENT (nombre_tabla, NORESEED)
pues para reinicializarla se podría aplicar el siguiente comando
esto indica que el siguiente registro a insertar comenzaría en 1 ya que el valor actual es reseteado a 0.
DBCC CHECKIDENT (nombre_tabla, NORESEED)
pues para reinicializarla se podría aplicar el siguiente comando
DBCC CHECKIDENT (nombre_tabla, RESEED, 0)
esto indica que el siguiente registro a insertar comenzaría en 1 ya que el valor actual es reseteado a 0.
martes, 28 de septiembre de 2010
Restringir el valor de una columna como única
La mayor parte de las veces que se crea una tabla en la base de datos, se crea con id y una clave, sin embargo esa clave no se debería de repetir, lo más fácil sería crear esa clave como llave primaria sin embargo para darle mantenimiento y trabajar con ella es un poco más talachuda, pues bien existen dos formas de decirle a la base de datos que no queremos que esa clave se repita, la primera y para mi la más fácil sería mediante el siguiente código:
O la segunda forma es mediante el Management Studio
1. Abrir el Management Studio
2. Abrir el Modificar de la tabla
3. Click derecho en la columna donde dice Indexes/Keys.
4. Agregar una restricción
5. Seleccionar el campo de la tabla y el valor Unico
Bueno espero y les sirva sino aquí dejo un manual Integridad de Datos
ALTER TABLE nombre_tabla
ADD CONSTRAINT nombre_restriccion --támbien conocida como constraint
UNIQUE(nombre_columna)
O la segunda forma es mediante el Management Studio
1. Abrir el Management Studio
2. Abrir el Modificar de la tabla
3. Click derecho en la columna donde dice Indexes/Keys.
4. Agregar una restricción
5. Seleccionar el campo de la tabla y el valor Unico
Bueno espero y les sirva sino aquí dejo un manual Integridad de Datos
Contar registros Duplicados
Cuando queremos registros NO duplicados se puede utilizar la clausula SELECT DISTINCT, pero que
pasa cuando necesitamos conocer Aquellos registros que se duplican.
SELECT Nombre_Columna,COUNT(Nombre_Columna) FROM Nombre_Tabla
GROUP BY Nombre_Columna HAVING COUNT(Nombre_Columna)>1
Y ahora si quiero conocer los ids de los registros duplicados aplicaría la siguiente consulta
SELECT Id_Columna, Nombre_Columna FROM Nombre_Tabla
WHERE Nombre_Columna IN
(SELECT Nombre_Columna FROM Nombre_Tabla
GROUP BY Nombre_Columna HAVING COUNT(Nombre_Columna)>1)
pasa cuando necesitamos conocer Aquellos registros que se duplican.
SELECT Nombre_Columna,COUNT(Nombre_Columna) FROM Nombre_Tabla
GROUP BY Nombre_Columna HAVING COUNT(Nombre_Columna)>1
Y ahora si quiero conocer los ids de los registros duplicados aplicaría la siguiente consulta
SELECT Id_Columna, Nombre_Columna FROM Nombre_Tabla
WHERE Nombre_Columna IN
(SELECT Nombre_Columna FROM Nombre_Tabla
GROUP BY Nombre_Columna HAVING COUNT(Nombre_Columna)>1)
viernes, 20 de agosto de 2010
Cambiar el password de un login en SQL SERVER
' http://lafabricadesoftware.blogspot.com/
ALTER LOGIN sa ENABLE ;
GO
ALTER LOGIN sa WITH PASSWORD = 'nuevo' ;
GO
ALTER LOGIN sa ENABLE ;
GO
ALTER LOGIN sa WITH PASSWORD = 'nuevo' ;
GO
martes, 17 de agosto de 2010
Actualización o UPDATE de varias Tablas
Bueno pues creo que esmuy simple, el código habla por si solo
--http://lafabricadesoftware.blogspot.com/
DECLARE @tablaUno table(Id_Uno INT IDENTITY,campo varchar(100),campod varchar(100))
DECLARE @tablaDos table(Id_Uno INT IDENTITY,campo varchar(100),campod varchar(100))
DECLARE @tablaTres table(Id_Uno INT IDENTITY,campo varchar(100),campoy varchar(100))
INSERT INTO @tablaUno (campo, campod )
VALUES ('a','b')
INSERT INTO @tablaUno (campo, campod )
VALUES ('c','d')
INSERT INTO @tablaUno (campo, campod )
VALUES ('x','y')
INSERT INTO @tablaDos (campo, campod )
VALUES ('I','I')
INSERT INTO @tablaDos (campo, campod )
VALUES ('I','I')
INSERT INTO @tablaDos (campo, campod )
VALUES ('I','I')
INSERT INTO @tablaTres(campo, campoy )
VALUES ('o','o')
INSERT INTO @tablaTres(campo, campoy)
VALUES ('c','d')
INSERT INTO @tablaTres(campo, campoy)
VALUES ('x','y')
INSERT INTO @tablaTres(campo, campoy)
VALUES ('x','yt')
UPDATE @tablaTres SET campo=tu.campo, campoy=td.campod
FROM @tablaTres te INNER JOIN @TablaUno tu ON te.Id_Uno = tu.id_uno
INNER JOIN @tablaDos td ON td.Id_Uno=tu.id_uno
SELECT * FROM @tablaTres
DECLARE @tablaDos table(Id_Uno INT IDENTITY,campo varchar(100),campod varchar(100))
DECLARE @tablaTres table(Id_Uno INT IDENTITY,campo varchar(100),campoy varchar(100))
INSERT INTO @tablaUno (campo, campod )
VALUES ('a','b')
INSERT INTO @tablaUno (campo, campod )
VALUES ('c','d')
INSERT INTO @tablaUno (campo, campod )
VALUES ('x','y')
INSERT INTO @tablaDos (campo, campod )
VALUES ('I','I')
INSERT INTO @tablaDos (campo, campod )
VALUES ('I','I')
INSERT INTO @tablaDos (campo, campod )
VALUES ('I','I')
INSERT INTO @tablaTres(campo, campoy )
VALUES ('o','o')
INSERT INTO @tablaTres(campo, campoy)
VALUES ('c','d')
INSERT INTO @tablaTres(campo, campoy)
VALUES ('x','y')
INSERT INTO @tablaTres(campo, campoy)
VALUES ('x','yt')
UPDATE @tablaTres SET campo=tu.campo, campoy=td.campod
FROM @tablaTres te INNER JOIN @TablaUno tu ON te.Id_Uno = tu.id_uno
INNER JOIN @tablaDos td ON td.Id_Uno=tu.id_uno
SELECT * FROM @tablaTres
Uso facilito de una transacción
No se, si les ha pasado que alguna vez quieren hacer un query sencillito por ejemplo actualizar el nombre de una persona llamada roman, pero necesitan hacer una transaccion sencillita nada mas para trabajar con el query o la consulta, bueno pues aquí un ejemplito:
--http://lafabricadesoftware.blogspot.com/
BEGIN TRANSACTION
UPDATE persona SET Nombre='Juan'
SELECT * FROM persona
ROLLBACK
SELECT * FROM persona
--http://lafabricadesoftware.blogspot.com/
BEGIN TRANSACTION
UPDATE persona SET Nombre='Juan'
SELECT * FROM persona
ROLLBACK
SELECT * FROM persona
lunes, 16 de agosto de 2010
Buscar un campo o algun nombre en un Stored Procedure SQL SERVER 2005
Hace algún tiempo tuve un problema, había que cambiar muchos campos de una tabla dentro de unos cuantos cientos de procedimientos almacenados en sql server 2005, una compañera de trabajo, encontro un poco de código googleando y pues yo igual, junte el código
adaptandolo a nuestras necesidades y sugió este procedimiento almacenado, que encuentra texto en los objetos de la base de datos manejada por sql server 2005,
espero les sirva.
------------------jefedigi-----------------------------------------------
-------busca un texto o cadena en los objetos de la bd-------------------
----------http://lafabricadesoftware.blogspot.com/-----------------------
CREATE PROCEDURE [dbo].[buscaTextoObjetosBD]
@SearchText AS VARCHAR(100)
AS
BEGIN
--DECLARE @SearchText AS VARCHAR(100)
--SET @SearchText = 'JEFEDIGI'
--Consulta de los procedimeintos que contienen dicho texto
SELECT DISTINCT USER_NAME(o.uid) + '.' + OBJECT_NAME(c.id) AS 'Object name',
CASE
WHEN OBJECTPROPERTY(c.id, 'IsReplProc') = 1
THEN 'Replication stored procedure'
WHEN OBJECTPROPERTY(c.id, 'IsExtendedProc') = 1
THEN 'Extended stored procedure'
WHEN OBJECTPROPERTY(c.id, 'IsProcedure') = 1
THEN 'Stored Procedure'
WHEN OBJECTPROPERTY(c.id, 'IsTrigger') = 1
THEN 'Trigger'
WHEN OBJECTPROPERTY(c.id, 'IsTableFunction') = 1
THEN 'Table-valued function'
WHEN OBJECTPROPERTY(c.id, 'IsScalarFunction') = 1
THEN 'Scalar-valued function'
WHEN OBJECTPROPERTY(c.id, 'IsInlineFunction') = 1
THEN 'Inline function'
WHEN OBJECTPROPERTY(c.id, 'IsView') = 1
THEN 'View'
END AS 'Object type'
FROM syscomments c
INNER JOIN
sysobjects o
ON c.id = o.id
WHERE c.text LIKE '%'+@SearchText+'%' AND
encrypted = 0 AND
( OBJECTPROPERTY(c.id, 'IsReplProc') = 1 OR
OBJECTPROPERTY(c.id, 'IsExtendedProc') = 1 OR
OBJECTPROPERTY(c.id, 'IsProcedure') = 1 OR
OBJECTPROPERTY(c.id, 'IsTrigger') = 1 OR
OBJECTPROPERTY(c.id, 'IsTableFunction') = 1 OR
OBJECTPROPERTY(c.id, 'IsScalarFunction') = 1 OR
OBJECTPROPERTY(c.id, 'IsInlineFunction') = 1 OR
OBJECTPROPERTY(c.id, 'IsView') = 1 )
union
SELECT TABLE_NAME,'Table' FROM INFORMATION_SCHEMA.tables
WHERE table_name LIKE '%'+@SearchText+'%'
UNION
SELECT COLUMN_NAME,'COLUMN' FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME LIKE '%'+@SearchText+'%'
ORDER BY [Object type], 'Object name'
END
adaptandolo a nuestras necesidades y sugió este procedimiento almacenado, que encuentra texto en los objetos de la base de datos manejada por sql server 2005,
espero les sirva.
------------------jefedigi-----------------------------------------------
-------busca un texto o cadena en los objetos de la bd-------------------
----------http://lafabricadesoftware.blogspot.com/-----------------------
CREATE PROCEDURE [dbo].[buscaTextoObjetosBD]
@SearchText AS VARCHAR(100)
AS
BEGIN
--DECLARE @SearchText AS VARCHAR(100)
--SET @SearchText = 'JEFEDIGI'
--Consulta de los procedimeintos que contienen dicho texto
SELECT DISTINCT USER_NAME(o.uid) + '.' + OBJECT_NAME(c.id) AS 'Object name',
CASE
WHEN OBJECTPROPERTY(c.id, 'IsReplProc') = 1
THEN 'Replication stored procedure'
WHEN OBJECTPROPERTY(c.id, 'IsExtendedProc') = 1
THEN 'Extended stored procedure'
WHEN OBJECTPROPERTY(c.id, 'IsProcedure') = 1
THEN 'Stored Procedure'
WHEN OBJECTPROPERTY(c.id, 'IsTrigger') = 1
THEN 'Trigger'
WHEN OBJECTPROPERTY(c.id, 'IsTableFunction') = 1
THEN 'Table-valued function'
WHEN OBJECTPROPERTY(c.id, 'IsScalarFunction') = 1
THEN 'Scalar-valued function'
WHEN OBJECTPROPERTY(c.id, 'IsInlineFunction') = 1
THEN 'Inline function'
WHEN OBJECTPROPERTY(c.id, 'IsView') = 1
THEN 'View'
END AS 'Object type'
FROM syscomments c
INNER JOIN
sysobjects o
ON c.id = o.id
WHERE c.text LIKE '%'+@SearchText+'%' AND
encrypted = 0 AND
( OBJECTPROPERTY(c.id, 'IsReplProc') = 1 OR
OBJECTPROPERTY(c.id, 'IsExtendedProc') = 1 OR
OBJECTPROPERTY(c.id, 'IsProcedure') = 1 OR
OBJECTPROPERTY(c.id, 'IsTrigger') = 1 OR
OBJECTPROPERTY(c.id, 'IsTableFunction') = 1 OR
OBJECTPROPERTY(c.id, 'IsScalarFunction') = 1 OR
OBJECTPROPERTY(c.id, 'IsInlineFunction') = 1 OR
OBJECTPROPERTY(c.id, 'IsView') = 1 )
union
SELECT TABLE_NAME,'Table' FROM INFORMATION_SCHEMA.tables
WHERE table_name LIKE '%'+@SearchText+'%'
UNION
SELECT COLUMN_NAME,'COLUMN' FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME LIKE '%'+@SearchText+'%'
ORDER BY [Object type], 'Object name'
END
Suscribirse a:
Entradas (Atom)