我最近被問到第一次看SQL,遇到了一個問題,我不能找出並希望尋求幫助,我有兩個SQL服務器運行Microsoft SQL Server 2008並且服務器A具有到服務器B的鏈接服務器,用雙撇號取代撇號
存在將數據發送到存儲過程的觸發器,該存儲過程然後將數據從服務器A傳遞到服務器B,並且該數據具有名稱,面對的是像O'Neil這樣的名字由於撇號而失敗了,我不知道如何用雙撇號替換撇號,因爲只有在'插入'表中才可以獲取數據。
我的觸發如下:
SELECT @PassengerName=PassengerName, @DocumentType=DocumentType, @BoardingSequenceNumber=BoardingSequenceNumber,
@FlightNumber=FlightNumber, @CarrierCode=CarrierCode, @DepartureTime=DepartureTime, @Destination=Destination, @DeviceAddress=DeviceAddress,
@Timestamp="Timestamp", @WorkstationId=WorkstationId, @DeliveredTimeStamp=DeliveredTimeStamp from inserted;
SELECT @cmd = 'sqlcmd -S '[email protected]@SERVERNAME+' -E -d '+DB_NAME()+' -Q "exec SP_transfer @PassengerName='''[email protected]+''',@DocumentType='[email protected]+
',@BoardingSequenceNumber='+cast(@BoardingSequenceNumber as varchar(20))+
',@FlightNumber='[email protected]+',@CarrierCode='[email protected]+
',@DepartureTime='''+cast(@DepartureTime as varchar(20))+''',@Destination='[email protected]+
',@DeviceAddress='[email protected]+''',@TimeStamp='+cast(@Timestamp as varchar(32))+
''',@WorkstationId='[email protected]+',@DeliveredTimeStamp='''+cast(@DeliveredTimeStamp as varchar(50))+'''"';
我怎樣才能讓這個在passengername列替換任何撇號沒有打破觸發,但它試圖解僱過嗎?我appologies,如果這個問題似乎是愚蠢的,但我的即時通訊相當新的這條線的工作,
感謝您的時間,
克雷格
直接使用存儲過程['SP_ExecuteSQL'](http://technet.microsoft.com/en-us/library/ms188001.aspx)直接傳遞參數,而不是試圖自己轉義值和搗碎他們成一個字符串。 – Bridge