2017-08-13 5 views
1

J'ai un problème qui est sur le Turksih Caractèrescaractères turcs ne sont pas représentés dans db lorsque j'utilise requête SQL dynamique

J'utilise requête SQL dynamique, quand je l'ai vu la table de caractères turc est présenté en anglais Charte 's' est vu au lieu de'ş '. Lorsque je n'ai pas utilisé Dynamic Query, je n'ai aucun problème.

Mais je dois utiliser Dynamic Query. Ma requête est:

declare @sql nvarchar(max) 
SET @Sql = concat('insert into ewrim.', QUOTENAME(@Tc), 
    '(', QUOTENAME(@sutunadi1),',',QUOTENAME(@sutunadi2) ,', gun, ay, yil, saat, dakika, islem) ' 
     ,'VALUES (' , @ilk_agirlik,',' , @son_agirlik ,',',convert(varchar(2),day(GETDATE())) ,',',convert(varchar(2),month(GETDATE())) ,',' , convert(varchar(4),year(GETDATE())) ,',' , convert(varchar(2),datepart(hh,GETDATE())) ,',' , convert(varchar(2),datepart(mi,GETDATE())) ,',' , char(39), @islem,char(39) ,')') 
EXECUTE sp_executesql @Sql 

Répondre

2

Tout d'abord, vous devez afficher la requête SQL:

declare @sql nvarchar(max) 
SET @Sql = concat('insert into ewrim.',... 
SELECT @sql; 

scénarios possibles:

1) Votre variable est définie comme VARCHAR():

DECLARE @s VARCHAR(10) = 'ş'; 
SELECT @s; 
-- s 

devrait être:

DECLARE @s2 NVARCHAR(10) = N'ş'; 
SELECT @s2; 
-- ş 

Rextester Demo

2) Votre colonne dans le tableau ne permet pas de stocker des caractères spécifiques:

DECLARE @s2 NVARCHAR(10) = N'ş'; 

DECLARE @t TABLE (col VARCHAR(10)); -- it depends on locale 
INSERT INTO @t(col) VALUES (@s2); 

SELECT * FROM @t; 
-- s 

Rextester Demo2

+0

Thanx, votre première suggestion a travaillé :) –