Budując kod T-SQL dynamicznie wielokrotnie można spotkać się z problemem znaku ‚.
Np. mając do dyspozycji fragment kodu z „Jak podłączyć bazy typu dbf (dBase) do MS SQL Server ?”
SELECT Pole_1, Pole_2, ..., Pole_n FROM OPENROWSET('MSDASQL','Driver={Microsoft dBASE Driver (*.dbf)};DBQ=C:\Temp','SELECT * FROM BazaDBF')
chcąc np. dynamicznie zmieniać ścieżkę C:\Temp należało by w zmiennej tekstowej użyć znaku ‚, ale przecież znak ten rozpoczyna i kończy ciąg tekstowy.
Należy zastosować funkcję char(), która zwraca znak o odpowiednim numerze. I Tak nasz znak ‚ to char(39).
declare @cmd varchar(500); declare @pp varchar(20); set @pp='C:\Temp' set @cmd = 'INSERT INTO Baza (POLE_1, POLE_2, POLE_3) SELECT POLE_1, POLE_2, POLE_3 FROM OPENROWSET('+<strong>CHAR(39)</strong>+'MSDASQL'+<strong>CHAR(39)</strong>+','+ <strong>CHAR(39)</strong>+'Driver={Microsoft dBASE Driver (*.dbf)};DBQ='+@pp+<strong>CHAR(39)</strong>+','+ <strong>CHAR(39)</strong>+'SELECT * FROM BazaDBF'+<strong>CHAR(39)</strong>+')' exec sys.sp_sqlexec @cmd