/ / Nvarchar et le texte sont incompatibles dans l'opérateur d'ajout - sql, sql-server-2008, guid, nvarchar

Nvarchar et le texte sont incompatibles dans l'opérateur d'ajout - sql, sql-server-2008, guid, nvarchar

Avec SQL Server 2008, je souhaite ajouter une variable (@wfID) dans un texte, comme ci-dessous:

 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>",

Donc, je voudrais ajouter le @wfID au texte mais il dit toujours

Les types de données nvarchar et text sont incompatibles dans l'opérateur d'ajout.

J'ai essayé de tout convertir en nvarchar, mais ensuite j'ai eu ceci:

Erreur de débordement arithmétique lors de la conversion de l'expression en type de données nvarchar.

Aucune suggestion?

Réponses:

20 pour la réponse № 1

Dans votre appel à convertir vous essayez de convertir juste Nvarchar ce qui signifie implicitement nvarchar (1)c’est-à-dire qu’il n’ya pas de place pour que l’ensemble du guide soit converti.

Changer cela en

convert(nvarchar(36), @wfID)

et ça va marcher.

Pour une raison étrange, MSSQL génère un dépassement arithmétique si SELECT CONVERT(nvarchar,NEWID()) mais donne un "espace de résultat insuffisant" si vous le faites SELECT CONVERT(varchar,NEWID()).


-1 pour la réponse № 2

Cela fonctionne 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=@sqlwhere1 +" convert(nvarchar(max),UserId)= """+convert(nvarchar(max),@UserID)+""""
END

EXECUTE (@sqlwhere1)

END