Busca lo que quieras

Mostrando entradas con la etiqueta Store Procedures. Mostrar todas las entradas
Mostrando entradas con la etiqueta Store Procedures. Mostrar todas las entradas

Crear reporte con sql server organizado por horas autocompletando filas

Suponiendo una tabla con esta estructura:

fecha                                Respuesta        
2012/02/01 XX:01            a              
2012/02/01 XX:01            b              
2012/02/01 XX:01            a              
2012/02/01 XX:01            b         
...
...
..
Muchos registros
...
...
Y suponiendo que no hay registros en la hora 2 respuesta b y no hay hora 3 respuesta a
    

Queremos lo siguiente como resultado del Store procedure:

Hora         Respuesta        Cantidad
1             a                              10
1             b                              15
2             a                                4
2             b                               0  <-- fila autocompletada porque no hay registros
3             a                               0  <-- fila autocompletada porque no hay registros
3             b                              6

El procedimiento para hacer una consulta con la cual pueda obtener un reporte por el conteo de filas, y que las horas que no existan en la bd se autocompleten este sería el query:

DECLARE @minHour INT
DECLARE @maxHour INT

DECLARE @DATEFROM DATETIME
SET @DATEFROM = '2013-09-15 00:00:56.330'

DECLARE @DATETO DATETIME
SET @DATETO = '2013-09-15 23:59:56.330'

SELECT TOP 1 @minHour = DATEPART(hh,FechaAAnalizar) FROM TablaReporte OPE
WHERE OPE.FechaAAnalizar > @DATEFROM
and  OPE.FechaAAnalizar < @DATETO
GROUP BY DATEPART(hh,FechaAAnalizar)
ORDER BY DATEPART(hh,FechaAAnalizar) ASC

SELECT TOP 1 @maxHour = DATEPART(hh,FechaAAnalizar) FROM TablaReporte OPE
WHERE OPE.FechaAAnalizar > @DATEFROM
and  OPE.FechaAAnalizar < @DATETO
GROUP BY DATEPART(hh,FechaAAnalizar)
ORDER BY DATEPART(hh,FechaAAnalizar) DESC


--SELECT DATEPART(hh,FechaAAnalizar), idTipoDeRespuesta, count(1) FROM TablaReporte OPE
--WHERE OPE.FechaAAnalizar > @DATEFROM
--and  OPE.FechaAAnalizar < @DATETO
--GROUP BY DATEPART(hh,FechaAAnalizar), idTipoDeRespuesta
--ORDER BY DATEPART(hh,FechaAAnalizar), idTipoDeRespuesta

IF OBJECT_ID('tempdb..#tableHours') IS NOT NULL DROP TABLE #tableHours

;WITH CTE as
(SELECT 1 i UNION ALL
SELECT i+1 i FROM CTE WHERE i < 5)
SELECT DATEPART(HH, DATEADD(HH, @minHour + i, @DATETO)) 'hour' INTO #tableHours from CTE

IF OBJECT_ID('tempdb..#tableTypes') IS NOT NULL DROP TABLE #tableTypes

SELECT idTipoDeRespuesta 'type' INTO #tableTypes FROM TablaReporte OPE
WHERE OPE.FechaAAnalizar > @DATEFROM
and  OPE.FechaAAnalizar < @DATETO
GROUP BY idTipoDeRespuesta

--test combinaciones tipos con horas
/*
SELECT [hour], [type] FROM #tableHours, #tableTypes
ORDER BY [hour], [type]
*/

SELECT * FROM
(
--Tabla de datos reales
SELECT DATEPART(hh,FechaAAnalizar) 'hour', idTipoDeRespuesta 'type', count(1) 'Value' FROM TablaReporte OPE
WHERE OPE.FechaAAnalizar > @DATEFROM
and  OPE.FechaAAnalizar < @DATETO
GROUP BY DATEPART(hh,FechaAAnalizar), idTipoDeRespuesta

UNION
--Agregar combinaciones que no se encuentren en los datos reales
SELECT [hour], [type] , 0 FROM
(
SELECT [hour], [type] FROM #tableHours, #tableTypes
) AS Combinaciones
WHERE CAST([hour] AS VARCHAR(30)) +  CAST([type] AS VARCHAR(30)) NOT IN
(
SELECT CAST(DATEPART(hh,FechaAAnalizar) AS VARCHAR(30)) + CAST(idTipoDeRespuesta  AS VARCHAR(30))  FROM TablaReporte OPE
WHERE OPE.FechaAAnalizar > @DATEFROM
and  OPE.FechaAAnalizar < @DATETO
GROUP BY DATEPART(hh,FechaAAnalizar), idTipoDeRespuesta
)
) AS ResultFinal
ORDER BY 'hour', 'type'

Sean felices! :) Y siéntanse libres de opinar ;)

Eliminar todos los objetos de una base de datos de SQL SERVER

Este es el código tomado de stackoverflow... muchas gracias stackoverflow.



/* Drop all non-system stored procs */
DECLARE @name VARCHAR(128)
DECLARE @SQL VARCHAR(254)

SELECT @name = (SELECT TOP 1 [name] FROM sysobjects WHERE [type] = 'P' AND category = 0 ORDER BY [name])

WHILE @name is not null
BEGIN
    SELECT @SQL = 'DROP PROCEDURE [dbo].[' + RTRIM(@name) +']'
    EXEC (@SQL)
    PRINT 'Dropped Procedure: ' + @name
    SELECT @name = (SELECT TOP 1 [name] FROM sysobjects WHERE [type] = 'P' AND category = 0 AND [name] > @name ORDER BY [name])
END
GO

/* Drop all views */
DECLARE @name VARCHAR(128)
DECLARE @SQL VARCHAR(254)

SELECT @name = (SELECT TOP 1 [name] FROM sysobjects WHERE [type] = 'V' AND category = 0 ORDER BY [name])

WHILE @name IS NOT NULL
BEGIN
    SELECT @SQL = 'DROP VIEW [dbo].[' + RTRIM(@name) +']'
    EXEC (@SQL)
    PRINT 'Dropped View: ' + @name
    SELECT @name = (SELECT TOP 1 [name] FROM sysobjects WHERE [type] = 'V' AND category = 0 AND [name] > @name ORDER BY [name])
END
GO

/* Drop all functions */
DECLARE @name VARCHAR(128)
DECLARE @SQL VARCHAR(254)

SELECT @name = (SELECT TOP 1 [name] FROM sysobjects WHERE [type] IN (N'FN', N'IF', N'TF', N'FS', N'FT') AND category = 0 ORDER BY [name])

WHILE @name IS NOT NULL
BEGIN
    SELECT @SQL = 'DROP FUNCTION [dbo].[' + RTRIM(@name) +']'
    EXEC (@SQL)
    PRINT 'Dropped Function: ' + @name
    SELECT @name = (SELECT TOP 1 [name] FROM sysobjects WHERE [type] IN (N'FN', N'IF', N'TF', N'FS', N'FT') AND category = 0 AND [name] > @name ORDER BY [name])
END
GO

/* Drop all Foreign Key constraints */
DECLARE @name VARCHAR(128)
DECLARE @constraint VARCHAR(254)
DECLARE @SQL VARCHAR(254)

SELECT @name = (SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'FOREIGN KEY' ORDER BY TABLE_NAME)

WHILE @name is not null
BEGIN
    SELECT @constraint = (SELECT TOP 1 CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'FOREIGN KEY' AND TABLE_NAME = @name ORDER BY CONSTRAINT_NAME)
    WHILE @constraint IS NOT NULL
    BEGIN
        SELECT @SQL = 'ALTER TABLE [dbo].[' + RTRIM(@name) +'] DROP CONSTRAINT [' + RTRIM(@constraint) +']'
        EXEC (@SQL)
        PRINT 'Dropped FK Constraint: ' + @constraint + ' on ' + @name
        SELECT @constraint = (SELECT TOP 1 CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'FOREIGN KEY' AND CONSTRAINT_NAME <> @constraint AND TABLE_NAME = @name ORDER BY CONSTRAINT_NAME)
    END
SELECT @name = (SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'FOREIGN KEY' ORDER BY TABLE_NAME)
END
GO

/* Drop all Primary Key constraints */
DECLARE @name VARCHAR(128)
DECLARE @constraint VARCHAR(254)
DECLARE @SQL VARCHAR(254)

SELECT @name = (SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'PRIMARY KEY' ORDER BY TABLE_NAME)

WHILE @name IS NOT NULL
BEGIN
    SELECT @constraint = (SELECT TOP 1 CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'PRIMARY KEY' AND TABLE_NAME = @name ORDER BY CONSTRAINT_NAME)
    WHILE @constraint is not null
    BEGIN
        SELECT @SQL = 'ALTER TABLE [dbo].[' + RTRIM(@name) +'] DROP CONSTRAINT [' + RTRIM(@constraint)+']'
        EXEC (@SQL)
        PRINT 'Dropped PK Constraint: ' + @constraint + ' on ' + @name
        SELECT @constraint = (SELECT TOP 1 CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'PRIMARY KEY' AND CONSTRAINT_NAME <> @constraint AND TABLE_NAME = @name ORDER BY CONSTRAINT_NAME)
    END
SELECT @name = (SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'PRIMARY KEY' ORDER BY TABLE_NAME)
END
GO

/* Drop all tables */
DECLARE @name VARCHAR(128)
DECLARE @SQL VARCHAR(254)

SELECT @name = (SELECT TOP 1 [name] FROM sysobjects WHERE [type] = 'U' AND category = 0 ORDER BY [name])

WHILE @name IS NOT NULL
BEGIN
    SELECT @SQL = 'DROP TABLE [dbo].[' + RTRIM(@name) +']'
    EXEC (@SQL)
    PRINT 'Dropped Table: ' + @name
    SELECT @name = (SELECT TOP 1 [name] FROM sysobjects WHERE [type] = 'U' AND category = 0 AND [name] > @name ORDER BY [name])
END
GO


Sean felices! :) Y siéntanse libres de opinar ;)

Numero aleatorio con sql server con mínimo y máximo

Gracias a stackoverflow, aquí dejo


DECLARE @maxval TINYINT, @minval TINYINT
select @maxval=24,@minval=5

SELECT CAST(((@maxval + 1) - @minval) *
    RAND(CHECKSUM(NEWID())) + @minval AS TINYINT)


Sean felices! :) Y siéntanse libres de opinar ;)

Crear tabla temporal desde select en sql server


Esta es la manera de lograr crear una tabla temporal desde un select.

select campo1, campo2, campo3
into #tablatemporal
from mitablanormalorigen
where ........


Sean felices! :) Y siéntanse libres de opinar ;)

Obtener únicamente fecha de datetime en SQL Server

Esta es la consulta:

SELECT CONVERT(VARCHAR(10),DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE())), 111) 'dia'

Espero les sirva.

Sean felices! :) Y siéntanse libres de opinar ;)

UPDATE con Order by en sql server

Aquí les coloco un ejemplo de como hacer un update con order by.

Gracias a stackoverflow:



;WITH    auxtable AS
        (
        SELECT  *, ROW_NUMBER() OVER( ORDER BY len(buscar) DESC ) as 'posicion'
        FROM    tmpreemplazar
        )
UPDATE  auxtable
SET     orden = posicion;


Sean felices! :) Y siéntanse libres de opinar ;)

Split string a rows o filas con sql server

La funcion es de tipo tabla, así que para utilizarla es:

select * from dbo.function('uno-dos')

Y esta es la función gracias a stackoverflow:


CREATE FUNCTION Split (
      @InputString                  VARCHAR(8000),
      @Delimiter                    VARCHAR(50)
)

RETURNS @Items TABLE (
      Item                          VARCHAR(8000)
)

AS
BEGIN
      IF @Delimiter = ' '
      BEGIN
            SET @Delimiter = ','
            SET @InputString = REPLACE(@InputString, ' ', @Delimiter)
      END

      IF (@Delimiter IS NULL OR @Delimiter = '')
            SET @Delimiter = ','

--INSERT INTO @Items VALUES (@Delimiter) -- Diagnostic
--INSERT INTO @Items VALUES (@InputString) -- Diagnostic

      DECLARE @Item                 VARCHAR(8000)
      DECLARE @ItemList       VARCHAR(8000)
      DECLARE @DelimIndex     INT

      SET @ItemList = @InputString
      SET @DelimIndex = CHARINDEX(@Delimiter, @ItemList, 0)
      WHILE (@DelimIndex != 0)
      BEGIN
            SET @Item = SUBSTRING(@ItemList, 0, @DelimIndex)
            INSERT INTO @Items VALUES (@Item)

            -- Set @ItemList = @ItemList minus one less item
            SET @ItemList = SUBSTRING(@ItemList, @DelimIndex+1, LEN(@ItemList)-@DelimIndex)
            SET @DelimIndex = CHARINDEX(@Delimiter, @ItemList, 0)
      END -- End WHILE

      IF @Item IS NOT NULL -- At least one delimiter was encountered in @InputString
      BEGIN
            SET @Item = @ItemList
            INSERT INTO @Items VALUES (@Item)
      END

      -- No delimiters were encountered in @InputString, so just return @InputString
      ELSE INSERT INTO @Items VALUES (@InputString)

      RETURN

END -- End Function
GO


La siguiente versión es para que tenga la variable orden.


SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [dbo].[SplitTabla] (
      @InputString                  VARCHAR(8000),
      @Delimiter                    VARCHAR(50)
)

RETURNS @Items TABLE (
      Item                          VARCHAR(8000),
      Orden INT
)

AS
BEGIN
DECLARE @auxorden INT
SET @auxorden = 0
      IF @Delimiter = ' '
      BEGIN
            SET @Delimiter = ','
            SET @InputString = REPLACE(@InputString, ' ', @Delimiter)
      END

      IF (@Delimiter IS NULL OR @Delimiter = '')
            SET @Delimiter = ','

--INSERT INTO @Items VALUES (@Delimiter) -- Diagnostic
--INSERT INTO @Items VALUES (@InputString) -- Diagnostic

      DECLARE @Item                 VARCHAR(8000)
      DECLARE @ItemList       VARCHAR(8000)
      DECLARE @DelimIndex     INT

      SET @ItemList = @InputString
      SET @DelimIndex = CHARINDEX(@Delimiter, @ItemList, 0)
      WHILE (@DelimIndex != 0)
      BEGIN
set @auxorden = @auxorden + 1;
            SET @Item = SUBSTRING(@ItemList, 0, @DelimIndex)
            INSERT INTO @Items VALUES (@Item, @auxorden)

            -- Set @ItemList = @ItemList minus one less item
            SET @ItemList = SUBSTRING(@ItemList, @DelimIndex+1, LEN(@ItemList)-@DelimIndex)
            SET @DelimIndex = CHARINDEX(@Delimiter, @ItemList, 0)
      END -- End WHILE

      IF @Item IS NOT NULL -- At least one delimiter was encountered in @InputString
      BEGIN
set @auxorden = @auxorden + 1;
            SET @Item = @ItemList
            INSERT INTO @Items VALUES (@Item, @auxorden)
      END

      -- No delimiters were encountered in @InputString, so just return @InputString
      ELSE 
      BEGIN
set @auxorden = @auxorden + 1;
INSERT INTO @Items VALUES (@InputString, @auxorden)
      END

      RETURN

END -- End Function



Sean felices! :) Y siéntanse libres de opinar ;)

Agrupar filas en una sola columna en SQL SERVER

Esto es gracias a Kevin Fairchild y a Ben y por supuesto a Stackoverflow.

Aquí esta la consulta para dejar los resultados de una varias filas en una sola columna... o sea como un group by de una columna de texto, y lo que hace es hacerle una concadenación:

Ejemplo siguiente: Una persona tiene varias direcciones de correo electronico, pero deseo agruparlas de tal forma que me aparezca así:
Persona   Emails
1             mail@gmail.com; mail2@hotmail.com; mail3@yahoo.com
...            ...




SELECT idpersona, STUFF((SELECT '; ' + email FROM direcciones WHERE PERDIR.idpersona = direcciones.idpersona FOR XML PATH ('') ),1,2,'') 'direccion' FROM direcciones PERDIR
where idpersona in
(
1,2,3,4,5
)
GROUP BY idpersona

Como se dan cuenta


Sean felices! :) Y sientanse libres de opinar ;)

Subconsulta con asterisco con SQL SERVER 2008

Hola.

Aquí esta la consulta:



select * from
(
select iddireccion, idcuenta from pedidos
group by iddireccion, idcuenta
)otratabla



Espero les sirva.

Sean felices! :) Y sientanse libres de opinar ;)

Convertir float a nvarchar en SQL SERVER

La clave es utilizar la función

STR

y asi evitamos que nos deje los valores como si fueran hexadecimales.


Sean felices! :) Y sientanse libres de opinar ;)

Eliminar usuario membership con SQL SERVER

Y este es el código:


DECLARE @RC int
   
  DECLARE @ApplicationName nvarchar(256)
  DECLARE @UserName nvarchar(256)
  DECLARE @TablesToDeleteFrom int
  DECLARE @NumTablesDeletedFrom int
  
SET @ApplicationName = '/'
SET @UserName = '111112'
SET @TablesToDeleteFrom = 15


EXECUTE @RC = [aspnet_Users_DeleteUser] 
@ApplicationName
,@UserName
,@TablesToDeleteFrom
,@NumTablesDeletedFrom OUTPUT

El número 15 significa que se elimina de todas las tablas. Creo que el 9 elimina solo de la tabla membership, pero no de aspnet_users.


Sean felices! :) Y sientanse libres de opinar ;)

Crear usuario membership .NET con SQL SERVER

Aquí dejo el código que me generó SQL SERVER, y al final deje el código en resumen hecho por mi.

Código generado por SQL y asignado valores por mi mismo


DECLARE @return_value int,
@UserId uniqueidentifier
SELECT @UserId = NEWID()
EXEC @return_value = [dbo].[aspnet_Membership_CreateUser]
@ApplicationName = N'/',
@UserName = N'777777',
@Password = N'777777',
@PasswordSalt = N'777777',
@PasswordQuestion = 'ninguno',
@PasswordAnswer = 'ninguno',
@Email = N'777@777.com',
@IsApproved = 1,
@CurrentTimeUtc = '2010-03-03',
@CreateDate = '2010-03-03',
@UniqueEmail = 1,
@PasswordFormat = 0,
@UserId = @UserId OUTPUT
SELECT @UserId as N'@UserId'
SELECT 'Return Value' = @return_value


GO

Aquí el código resumido por mi.

DECLARE @UserId uniqueidentifier
DECLARE @datenow NVARCHAR(15)
SELECT @UserId = NEWID()
SELECT @datenow = convert(varchar, GETDATE(), 111)


EXEC aspnet_Membership_CreateUser '/', '888888', '888888', '888888', '888888', '888888', '8@8.COM', 1, @datenow, @datenow, 1, 1, @UserId


SELECT * FROM ASPNET_MEMBERSHIP


Espero les sirva.

Sean felices! :) Y sientanse libres de opinar ;)

Convertir fecha a Año Mes Dia YYYY/MM/DD en SQL SERVER

Bueno, aquí les dejo el dato:

select convert(varchar, GETDATE(), 111)

Cada número significa una conversión, así que solo es cambiar el número para un formato distinto.

Sean felices! :) Y sientanse libres de opinar ;)

Alias de columna en sentencia WHERE en SQL Server

Bueno...

Realmente no utilizo como tal el alias en la columna WHERE, sino lo que hacemos es emular una tabla apartir de una consulta SELECT. Entonces ahi si podremos utilizar el "alias", que no es alias en realidad, je je.... Pero mejor con el ejemplo:


SELECT * FROM
(
SELECT AUX1.idcliente, AUX1.valor,
(
SELECT SUM(AUX2.valor) FROM sb_auxlimites AUX2
WHERE AUX2.id <= AUX1.id
) AS [acumulado]
FROM sb_auxlimites AUX1
)X
WHERE [acumulado] < 5046548159

Espero les sirva.


Sean felices! :) Y sientanse libres de opinar ;)

Crear columna autonumerica a una consulta en SQL Server

Bueno... seré breve, esta una consulta que utilice para un proyecto:


SELECT CLI1.id, CLI1.idcliente, SUM(CLI1.primas), ROW_NUMBER() OVER( ORDER BY SUM(CLI1.primas)ASC ) as 'posicion'


  FROM sb_clipro CLI1
WHERE CLI1.idproducto IN (
SELECT sb_producto.id FROM sb_producto 
WHERE sb_producto.nombre IN ('AUT')
)
GROUP BY CLI1.id, CLI1.idcliente
ORDER BY SUM(CLI1.primas)


y la clave para el autonumérico es:

ROW_NUMBER() OVER( ORDER BY SUM(CLI1.primas)ASC )

Como vemos la palabra clave ROW_NUMBER() , su propio nombre indica que cuenta los registros, sin embargo, debe ir acompañada de uan sentencia over donde se coloca un ORDER BY fundamental sobre la cual tomará la base ROW_NUMBER() y colocar el autonumerico.

Espero les sirva.


Sean felices! :) Y sientanse libres de opinar ;)

Convertir formato YYYYMMDD a fecha

Bueno, cuando tengamos un campo tipo float con el formato YYYYMMDD, y lo queremos convertir a fecha, debemos primero pasarlo a varchar y después ahi si lo pasamos a fecha, así:

SELECT CAST(REPLACE(STR(nombrecampofloatfecha, 10), ' ', '') AS DATETIME) FROM nombretabla

Sean felices! :) Y sientanse libres de opinar ;)

Convertir float a varchar sin que quede hexadecimal

Bueno, cuando convertimos un float a un varchar nos da formato hexadecimal.

para que sencillamente lo pase a tipo texto se utiliza la función STR, pero ojo que si por ejemplo el numero tiene solo 3 numeros, al pasarlo con STR queda así "      123", es decir, deja unos espacios, entonces recomiendo despues del STR quitar los los espacios generados con un replace.

Además, el STR tiene un parametro más para especificar el numero de caracteres a convertir.

Bueno, para más información buscar en google STR sql server en internet.

Así que esta sería la sentencia a utilizar realizando STR para un número no mayor a 10 caracteres, y de una vez hacemos el replace para que no quede con espacios blancos.


SELECT REPLACE(STR( nombredecampo , 10), ' ', '') FROM nombretabla


Ah, y por cierto... esto es en SQL SERVER.

Sean felices! :) Y sientanse libres de opinar ;)

Cursor básico en SQL SERVER

Bueno....

Aquí dejo un código básico del cual se tomará como base para mis próximos cursores.

Este cursor recibe un parámetro el cual tomo para ejecutar lo que quiera dentro del cursor.


DECLARE @idproducto AS nvarchar(400)
DECLARE CursorIdProductos CURSOR FOR 


SELECT id FROM sb_producto


OPEN CursorIdProductos
FETCH NEXT FROM CursorIdProductos INTO @idproducto
WHILE @@fetch_status = 0
BEGIN






   //esto es lo que ejecutare n veces segun el select de arriba
    PRINT @idproducto
    //todo el codigo de más, es pura chachara obligatoria... je je






    FETCH NEXT FROM CursorIdProductos INTO @idproducto
END
CLOSE CursorIdProductos
DEALLOCATE CursorIdProductos


Saludos.

Sean felices! :) Y sientanse libres de opinar ;)

Utilizar While en store procedures en SQL Server


Bueno, esto lo dejo aquí es como para recordar como se hace un ciclo repetitivo en sql server.


No se si esto les sirva, pero es bien básico. En este caso, es un ciclo y dentro de este, otro ciclo.


BEGIN
declare @parentid int
declare @parentidj int
declare @conteo int
      SET NOCOUNT ON;
      SET @parentid = 4
 SET @parentidj = 1
 SET @conteo = 0
     
      WHILE @parentid < 11
            BEGIN
                  --print 'a'
set @parentidj  = 26;
WHILE @parentidj < 42
BEGIN
   INSERT INTO tblResultadoTMK_Servicio VALUES (@conteo + 1, @parentidj, @parentid )
print convert(varchar(30), @conteo + 1) + ' v ' + convert(varchar(30), @parentidj) + ' v ' + convert(varchar(30), @parentid)

--print @parentid
 set @parentidj = @parentidj + 1;
SET @conteo = @conteo + 1;
END


 set @parentid = @parentid + 1;


            END
    print @conteo
END


Sean felices! :) Y sientanse libres de opinar ;)

Pasar variables a sql dinamico

Bueno, no se si esto lo vaya a utilizar, pero el caso es que esto me funcionó para pasar parametros a un sql dinamico... así que aquí dejo el código... que pena, sin comentarios el codigo porque lo hice como hace 2 años o 3.


DECLARE @SQLString NVARCHAR(500)
DECLARE @ParmDefinition NVARCHAR(500)
DECLARE @IntVariable INT
DECLARE @Lastlname varchar(30)






SET @SQLString = N'SELECT @LastlnameOUT = max(lname)
                   FROM pubs.dbo.employee WHERE job_lvl = @level'


SET @ParmDefinition = N'@level tinyint, @LastlnameOUT varchar(30) OUTPUT'
SET @IntVariable = 35
EXECUTE sp_executesql
@SQLString,
@ParmDefinition,
@level = @IntVariable,
@LastlnameOUT=@Lastlname OUTPUT
SELECT @Lastlname


---------------------------


DECLARE @SQLString NVARCHAR(500)
DECLARE @ParmDefinition NVARCHAR(500)
DECLARE @IntVariable INT
DECLARE @Lastlname varchar(30)
SET @SQLString = N'Select @LastlnameOUT = Case ''ImageDirect'' when ''ImageDirect'' then 16 else 17 end'
SET @ParmDefinition = N'@level tinyint, @LastlnameOUT varchar(30) OUTPUT'
SET @IntVariable = 35
EXECUTE sp_executesql
@SQLString,
@ParmDefinition,
@level = @IntVariable,
@LastlnameOUT=@Lastlname OUTPUT
SELECT @Lastlname
PRINT @Lastlname


Depronto a alguien le sirva.


Sean felices! :) Y sientanse libres de opinar ;)

Palabras Clave

.NET (93) AJAX (2) ajaxcontroltoolkit (2) Algoritmos (1) android (1) Angular (1) Arrays (1) AS2 o ActionScript 2.0 (1) AS3 o ActionScript 3.0 (64) ASP (7) ASP.NET (3) Azure (1) Azure DevOps (2) Backup (2) Batch (4) blogger (1) Browser Support (2) C# (53) Charts (1) Chorme extensions (1) Chrome (3) cmd (18) código postal (1) Colombia tips (1) command (1) Conexion remota (1) Controles Web .NET (24) Cookies (1) cordova (1) CSS (14) CSV (5) Cufon (1) DateTime (2) deployment (2) Desarrollo movil (2) Desarrollo web (5) Diseño (4) DNN o DotNetNuke (5) docker (1) Encuestas (1) Entity Framework (1) Error (1) Eval (2) Excel (4) Expresiones regulares (2) Facebook (14) fechas (1) Fiddler (1) FileUpload (1) Filezilla (1) Firefox (2) Flash (9) Fonts (3) FQL (1) frameworks (2) Futuro de la web (1) git (1) Google Code (13) Google Maps (4) hackintosh (3) hazard 10.6.2 (3) herramientas para developers (1) highchart (1) Hilos (2) Hosting Windows (18) HTML (38) HTML5 (6) IDE (1) IE (2) IE9 (1) IIS (13) imagenes (3) jasmine (2) java (1) jqgrid (2) Jquery y Javascript (90) jquery-ui (5) jQueryMobile (1) JSON (1) knockout (4) library (1) Link Interesantes (2) List (1) Macro (2) Matemáticas (2) Membership (6) Memoria (1) Mis Experiencias (3) momentjs (1) ms-dos (1) MSN (1) MVC (1) MVC4 (3) MySQL (2) node.js (4) Notepad++ (3) Notificaciones (1) ObjectDataSource (2) Online (2) Opinión (4) OSX (3) Parallels Plesk Panel (1) petapoco (1) PhantomJS (1) PHP (4) Porqué este blog (1) Powershell (1) Razor (3) Redes (2) REGEX (4) REST (1) SDK Android (1) Seguridad (1) SelectParameters (1) Selenium (2) sencha (3) sencha cmd (2) SEO (1) SMTP (2) Software útil (8) Solución (1) Soporte (1) SQL (15) SQL Server (58) SQLite (2) Store Procedures (20) String (5) Testing Code (2) texto (2) tips de datos (1) tips de desarrollo (1) TutoFaceAS3 (4) TutoProAS3 (4) Tutoriales (7) Tweenlite effects (3) Últimas noticias (1) unit testing (1) usb (1) VBA (1) Video (1) virus (1) Web API (2) Web Browsers (1) Web Forms (7) web.config (1) Webmaster (8) Webmatrix (1) webrole (1) webservices (1) webstorm (1) Win Forms (5) Windows (21) Windows 7 (1) Windows 8 (1) XML (2) Youtube API (2)