Artykuły

A A A
Drukuj Ekportuj do PDF
Opublikowane: 2010.08.18 20:33 | Dariusz Brejnak

[Porada] Jak ominąć problem znaku ' podczas dynamicznej budowy kodu w T-SQL ?

Jak ominąć problem znaku ' podczas dynamicznej budowy kodu w T-SQL ?

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

 


Komentarze 2 Masz uwagi do tej strony? Napisz

C3PO 2010.08.19 14:48
0 oceń pozytywnie   oceń negatywnie 0
avatar
 

Zamiast char(39) można użyć po prostu dwóch znaków apostrofu wewnątrz napisu, np.:

SELECT '''napis w apostrofach'''

Pozdrawiam,
Paweł Potasiński, SQL Server MVP
{ Rozwiązałem Twój problem? Kliknij Rozwiązanie. Pomogłem Ci? kliknij Pomógł mi. }

Pozdrawiam,
Paweł Potasiński
Partner Technology Advisor | Microsoft Polska 
Blog SQLGeekPLSSUG

dbsoft 2010.08.26 9:21
0 oceń pozytywnie   oceń negatywnie 0
avatar Ekspert WSS
 

Zgadza się można też tak:

 

set @cmd = 'INSERT INTO Baza (POLE_1, POLE_2, POLE_3)
SELECT POLE_1, POLE_2, POLE_3
FROM OPENROWSET(''MSDASQL'',''Driver={Microsoft dBASE Driver (*.dbf)};DBQ='+@pp+''',''SELECT * FROM BazaDBF'')'

________________________________________

Pozdrawiam

Dariusz "DBSoft" Brejnak

(MCP,MCTS-SQL Server 2008 Database Development)

Jeśli pomogłem kliknij na Pomógł

_______________________

Pozdrawiam,

Dariusz "DBSoft" Brejnak

(MCP,MCTS-SQL Server 2008 Database Development, Implementation and Maintenance)

Dodaj komentarz

avatar

Zaloguj się lub Zarejestruj się aby wykonać tę czynność.

Autor Dariusz Brejnak
avatar Ekspert WSS
 

Załóż konto
WSS to serwis, który łączy dziesiątki tysięcy specjalistów IT w Polsce, zajmujących się szeroko pojętymi technologiami Microsoft. Portal działa od 2003 roku, i oprócz setek publikacji technicznych, rozwijającego się forum - portal to ludzie, którzy go tworzą. To właśnie z myślą o nich warto codziennie nas odwiedzać.

Dowiedz się więcej o WSS