Объединить с предложением where для меня:
merge into table1
using table2
on (table1.id = table2.id)
when matched then update set table1.startdate = table2.start_date
where table1.startdate > table2.start_date;
Вам нужно предложение WHERE
, потому что столбцы, на которые ссылается в предложении ON
, не могут быть обновлены.
Писатель действительно должен стремиться записать в потоке правильно.
, Но в Вашем последнем исходном коде, удостоверьтесь, что Вы действительно используете любой MemoryStream. ToArray () для получения надлежащих данных или, если Вы не хотите копировать данные, используют MemoryStream. GetBuffer () с MemoryStream. Длина а не длина возвращенного массива.
GetBuffer возвратит внутренний буфер, используемый MemoryStream и его длиной, обычно больше, чем длина данных, которые были записаны в поток.
Это избежит Вас, чтобы отправить мусор в конце потока и не испортить некоторый строгий декодер изображения, который не терпел бы запаздывание мусора. (И передайте меньше данных...)
Я полагаю, что проблема состоит в том что Ответ. OutputStream не поддерживает поиск. Для сохранения PNG (или JPEG), объект изображения должен быть в состоянии записать вывод непоследовательно. Если бы я помню правильно, это работало бы, если Вы сохранили образ как BMP, так как тот формат изображения может быть записан, не ища поток.
Хорошо я использовал обертку для Потока (реализует Поток и передает вызовы базовому потоку) определить то Изображение. Сохраните () свойства Position и Length вызовов, не проверяя CanSeek, который возвращает false. Это также пытается установить Положение на 0.
, Таким образом, это кажется, промежуточный буфер требуется.
Image.Save(MemoryStream stream) действительно требует объект MemoryStream, который можно искать. Поток context.Response.OutputStream является только прямым и не поддерживает поиск, поэтому вам нужен промежуточный поток. Однако вам не нужен буфер массива байтов. Вы можете писать непосредственно из временного потока памяти в context.Response.OutputStream:
/// <summary>
/// Sends a given image to the client browser as a PNG encoded image.
/// </summary>
/// <param name="image">The image object to send.</param>
private void SendImage(Image image)
{
// Get the PNG image codec
ImageCodecInfo codec = GetCodec("image/png");
// Configure to encode at high quality
using (EncoderParameters ep = new EncoderParameters())
{
ep.Param[0] = new EncoderParameter(Encoder.Quality, 100L);
// Encode the image
using (MemoryStream ms = new MemoryStream())
{
image.Save(ms, codec, ep);
// Send the encoded image to the browser
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.ContentType = "image/png";
ms.WriteTo(HttpContext.Current.Response.OutputStream);
}
}
}
Полнофункциональный пример кода доступен здесь: