На некоторых других языках метасимволы не интерпретируются при использовании одинарных кавычек. Возьмите этот пример в Ruby:
irb(main):001:0> puts "string1\nstring2"
string1
string2
=> nil
irb(main):002:0> puts 'string1\nstring2'
string1\nstring2
=> nil
В Python, если Вы хотите, чтобы строка была взята буквально, можно использовать необработанные строки (строка, которой предшествует 'r' символ):
>>> print 'string1\nstring2'
string1
string2
>>> print r'string1\nstring2'
string1\nstring2
Что-то вроде этого должно сработать (сейчас не могу проверить - по памяти):
UPDATE SHIPMENT
SET
OrgAddress1 = BD.OrgAddress1,
OrgAddress2 = BD.OrgAddress2,
OrgCity = BD.OrgCity,
OrgState = BD.OrgState,
OrgZip = BD.OrgZip,
DestAddress1 = BD.DestAddress1,
DestAddress2 = BD.DestAddress2,
DestCity = BD.DestCity,
DestState = BD.DestState,
DestZip = BD.DestZip
FROM
BookingDetails BD
WHERE
SHIPMENT.MyID2 = @MyID2
AND
BD.MyID = @MyID
Это поможет?
вы можете использовать update from ...
что-то вроде:
update shipment set .... от отгрузка внутреннее соединение ProfilerTest.dbo.BookingDetails на ...
Я бы написал так
UPDATE s
SET OrgAddress1 = bd.OrgAddress1, OrgAddress2 = bd.OrgAddress2,
... DestZip = bd.DestZip
--select s.OrgAddress1, bd.OrgAddress1, s.OrgAddress2, bd.OrgAddress2, etc
FROM Shipment s
JOIN ProfilerTest.dbo.BookingDetails bd on bd.MyID =s.MyID2
WHERE bd.MyID = @MyId
Таким образом, соединение явное, поскольку неявное соединение - это плохо, ИМХО. Вы можете запустить закомментированный выбор (обычно я указываю поля, которые я обновляю, старые и новые значения рядом друг с другом), чтобы убедиться, что то, что я собираюсь обновить, - это именно то, что я хотел обновить.
Вы должны уметь что-то делать вместе строки следующего оператора
UPDATE s
SET
OrgAddress1 = bd.OrgAddress1,
OrgAddress2 = bd.OrgAddress2,
...
DestZip = bd.DestZip
FROM
Shipment s, ProfilerTest.dbo.BookingDetails bd
WHERE
bd.MyID = @MyId AND s.MyID2 = @MyID2
FROM можно сделать более оптимальным (используя более конкретные соединения), но вышеприведенное должно помочь. Кроме того, приятное побочное преимущество написания этого способа - предварительный просмотр изменения UPDATE UPDATE s SET
на чтение SELECT
! После этого вы увидите эти данные в том виде, в котором они выглядели бы, если бы обновление имело место.
Вы можете использовать :
UPDATE s SET
s.Field1 = q.Field1,
s.Field2 = q.Field2,
(list of fields...)
FROM (
SELECT Field1, Field2, (list of fields...)
FROM ProfilerTest.dbo.BookingDetails
WHERE MyID=@MyID
) q
WHERE s.MyID2=@ MyID2