none
Concatenar campos en un consulta dinamica utililizando sp_executesql

    Question

  • hola buen dia tengo una seleccion dinamica utilizando sp_executesql

    pero quiero que dentro de la consulta poder concatener espacios entre Nombre, ApellidoPate, ApellidoMate les dejo el codigo para que le eche un vistazo

    el resultado que me manda es el esiguiente

     NombreUsuario   |   Contraseña

    rodolfocruzlopez       admin

    y quiero que me realice esto

       NombreUsuario   |   Contraseña

    rodolfo cruz lopez       admin

    espero que me alla explicado espero sus respuestas y sugerencias de antemano les dejo el codigo sql y un saludo.

    ALTER PROCEDURE [dbo].[usp_ADOCcat_UsuarioSED]
    	@WhereCondition nvarchar(500),
    	@OrderByExpression nvarchar(250) = NULL
    AS
    
    SET NOCOUNT ON
    SET TRANSACTION ISOLATION LEVEL READ COMMITTED
    
    
    DECLARE @SQL nvarchar(3250)
    
    SET @SQL = '
    SELECT
    	[NombreUsuario] + ApellidoPate +  [ApellidoMate] as NombreUsuario,
    	[Contraseña]
    
    FROM
    	[dbo].[ADOCcat_Usuario]
    WHERE
    	' + @WhereCondition
    
    IF @OrderByExpression IS NOT NULL AND LEN(@OrderByExpression) > 0
    BEGIN
    	SET @SQL = @SQL + '
    ORDER BY
    	' + @OrderByExpression
    END
    
    EXEC sp_executesql @SQL

    Monday, October 22, 2012 2:27 PM

Answers

  • De esta manera :

    ...
    SET @SQL = '
    SELECT
    	[NombreUsuario] + '' '' + ApellidoPate + '' '' +  [ApellidoMate] as NombreUsuario,
    	[Contraseña]
    
    FROM
    	[dbo].[ADOCcat_Usuario]
    WHERE
    	' + @WhereCondition
    ...
    

    Como lo estas haciendo, tienes una desventaja y un punto vulnerable muy importante, revisa estas ligas con respecto al SQL INJECTION ( 1 2 )
    SALUDOS!


    Sergio Sánchez Arias

    • Marked as answer by Rudolfcruz Monday, October 22, 2012 2:55 PM
    • Unmarked as answer by Rudolfcruz Monday, October 22, 2012 2:56 PM
    • Marked as answer by Rudolfcruz Monday, October 22, 2012 3:35 PM
    Monday, October 22, 2012 2:32 PM

All replies

  • De esta manera :

    ...
    SET @SQL = '
    SELECT
    	[NombreUsuario] + '' '' + ApellidoPate + '' '' +  [ApellidoMate] as NombreUsuario,
    	[Contraseña]
    
    FROM
    	[dbo].[ADOCcat_Usuario]
    WHERE
    	' + @WhereCondition
    ...
    

    Como lo estas haciendo, tienes una desventaja y un punto vulnerable muy importante, revisa estas ligas con respecto al SQL INJECTION ( 1 2 )
    SALUDOS!


    Sergio Sánchez Arias

    • Marked as answer by Rudolfcruz Monday, October 22, 2012 2:55 PM
    • Unmarked as answer by Rudolfcruz Monday, October 22, 2012 2:56 PM
    • Marked as answer by Rudolfcruz Monday, October 22, 2012 3:35 PM
    Monday, October 22, 2012 2:32 PM
  • De esta manera :

    ...
    SET @SQL = '
    SELECT
    	[NombreUsuario] + '' '' + ApellidoPate + '' '' +  [ApellidoMate] as NombreUsuario,
    	[Contraseña]
    
    FROM
    	[dbo].[ADOCcat_Usuario]
    WHERE
    	' + @WhereCondition
    ...

    Como lo estas haciendo, tienes una desventaja y un punto vulnerable muy importante, revisa estas ligas con respecto al SQL INJECTION ( 1 2 )
    SALUDOS!


    Sergio Sánchez Arias

    hola gracias por responder,ya realice lo que me indicates de colocar las " " pero me funciono me marca error, gracias por la lectura recomendada es muy buena no savia acerca de eso, te dejo el codigo como lo implemete y el resultado del error que me manda, Gracias por ayudar.

    ALTER PROCEDURE [dbo].[usp_ADOCcat_UsuarioSED]
    	@WhereCondition nvarchar(500),
    	@OrderByExpression nvarchar(250) = NULL
    AS
    
    SET NOCOUNT ON
    SET TRANSACTION ISOLATION LEVEL READ COMMITTED
    
    
    DECLARE @SQL nvarchar(3250)
    
    SET @SQL = '
    SELECT
    	[NombreUsuario]+ " " +[ApellidoPate]+ " " + [ApellidoMate] as NombreUsuario,
    	[Contraseña]
    
    FROM
    	[dbo].[ADOCcat_Usuario]
    WHERE
    	' + @WhereCondition
    
    
    EXEC sp_executesql @SQL
    

    aca el error que muestra

    Msg 207, Level 16, State 1, Line 2
    Invalid column name ' '.
    Msg 207, Level 16, State 1, Line 2
    Invalid column name ' '.
    
    (1 row(s) affected)

    Monday, October 22, 2012 3:21 PM
  • Rudolf, a simple vista no le encuentro el problema, de hecho hice un query parecido con respecto a mis tablas y no me marca ningún error


    te sugiero algo, sustituye:

    EXEC sp_executesql @SQL 

    por esto

    PRINT( @SQL )

    Y lo que te arroje, copia y pegalo aquí y también en tu SMSS,  para que identifiquemos el problema más rapido :)

    continuamos apoyándote.


    Sergio Sánchez Arias

    Monday, October 22, 2012 3:31 PM
  • OK SergioSAy si esta bien tu respuesta, yo era el que la estaba regando utilizando comilla doble (") en lugar de utilizar comilla simple (') gracias por tu respuesta solucionado.

    Saludos.

     
    Monday, October 22, 2012 3:40 PM