Budując kod T-SQL dynamicznie wielokrotnie można spotkać się z problemem znaku ‘.
Np. mając do dyspozycji fragment kodu:
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('+CHAR(39)+'MSDASQL'+CHAR(39)+','+
CHAR(39)+'Driver={Microsoft dBASE Driver (*.dbf)};DBQ='+@pp+CHAR(39)+','+
CHAR(39)+'SELECT * FROM BazaDBF'+CHAR(39)+')'
exec sys.sp_sqlexec @cmd