Nvarchar y texto son incompatibles en el complemento operador

Con SQL Server 2008, me gustaría añadir una variable (@wfID) en un texto como el siguiente:

 DECLARE @wfID uniqueidentifier
 SET @wfID = NEWID()

'<META http-equiv="Content-Type" content="text/html; " />  <br><input type="button"
    value="" onclick="window.open(&quot;http://localhost/TestWeb2/Test_Look.aspx?Test_ID='
    + convert(nvarchar, @wfID)
    + '&quot;);" /></br>',

Así, me gustaría añadir el @wfID para el texto, pero siempre dice que

Los tipos de datos nvarchar y texto son incompatibles en el complemento operador.

He tratado de convertir todo en nvarchar, pero luego me puse esto:

Error de desbordamiento aritmético expresión de conversión de tipo de datos nvarchar.

Alguna sugerencia?

OriginalEl autor Petty | 2013-09-10

2 Kommentare

  1. 24

    En su llamada a convertir intenta convertir a sólo nvarchar que implícitamente significa nvarchar(1), es decir, no hay espacio para todo el guid para ser convertidos.

    Cambio que a

    convert(nvarchar(36), @wfID)

    y va a trabajar.

    Por alguna extraña razón MSSQL da un desbordamiento aritmético si haciendo SELECT CONVERT(nvarchar,NEWID()) pero le da un buen «resultado Insuficiente espacio’ si haciendo SELECT CONVERT(varchar,NEWID()).

    Gracias! Funcionó a la perfección!
    Excelente. Funciona bien 🙂

    OriginalEl autor krisku

  2. 1

    Esto está funcionando bien»

        --EXECUTE usp_TEST
        CREATE PROCEDURE [dbo].[usp_TEST](
    
        @UserID nvarchar(max) ='82F1A3A6-4DC6-481F-9046-856270E66468'
        )
        AS
        BEGIN
        declare @sqlwhere1 nvarchar(max)=''
        SELECT   @sqlwhere1= 'SELECT * 
            FROM [yourtablename] WITH(NOLOCK) WHERE '
    
            IF(@UserID <> '')
            BEGIN 
             SELECT @sqlwhere1[email protected]sqlwhere1 +' convert(nvarchar(max),UserId)= '''+convert(nvarchar(max),@UserID)+'''' 
            END 
    
        EXECUTE (@sqlwhere1) 
    
        END

    OriginalEl autor Veera Sekhar

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea