От новичка до гуру: Курсы программирования на CyberDuff

Выбор и обновление в одной хранимой процедуре

У меня есть хранимая процедура выбора, и я пытаюсь сделать так, чтобы результаты, которые она приносит, также обновляли столбец с именем Downloaded и помечали эти строки как загрузки.

Например, я вытаскиваю 10 строк из тех 10 строк, которые я также хочу обновить для столбца Downloaded до значения true в той же хранимой процедуре. Это возможно?

Это пока мой сп, он скидывает данные.

ALTER PROCEDURE [dbo].[GetLeads]
@DateTo datetime = null,
@DateFrom datetime = null
AS
    SELECT name
         , lastname
         , title
         , company
         , address
         , address2
         , city
         , [state]
         , zip
         , country
         , stamptime

    FROM
        lead
    where
         ((@DateTo is null AND @DateFrom IS null) or (stamptime BETWEEN @DateTo AND @DateFrom))

Спасибо!


  • Может я не понял вопроса, но UPDATE lead SET Downloaded=TRUE WHERE ((@DateTo is null AND @DateFrom IS null) or (stamptime BETWEEN @DateTo AND @DateFrom)) ?? 03.02.2012

Ответы:


1

Продолжая ответ на комментарий вулканино, примерно так:

ALTER PROCEDURE [dbo].[GetLeads]
@DateTo datetime = null,
@DateFrom datetime = null
AS
    UPDATE  
        lead 
    SET     
        Downloaded = 1 
    WHERE   
        ((@DateTo is null AND @DateFrom IS null) or (stamptime BETWEEN @DateTo AND @DateFrom))

    SELECT name
         , lastname
         , title
         , company
         , address
         , address2
         , city
         , [state]
         , zip
         , country
         , stamptime

    FROM
        lead
    where
         ((@DateTo is null AND @DateFrom IS null) or (stamptime BETWEEN @DateTo AND @DateFrom))
03.02.2012

2

Вы можете просто OUTPUT обновить строки;

UPDATE lead
  SET Downloaded = 1
OUTPUT INSERTED.* 
  WHERE ((@DateTo is null AND @DateFrom IS null) or (stamptime BETWEEN @DateTo AND @DateFrom))

Это обновляет, а затем возвращает обновленные строки в одном выражении.

03.02.2012
  • Я использовал это решение с DELETED.* (вместо INSERTED.*), чтобы вернуть исходные значения поля, то есть значения до применения ОБНОВЛЕНИЯ. 30.10.2015

  • 3

    Лучше всего использовать оператор OUTPUT с оператором UPDATE.

    http://blog.sqlauthority.com/2007/10/01/sql-server-2005-output-clause-example-and-explanation-with-insert-update-delete/

    DECLARE @TEMPTABLE
    (
        name <type>
        , lastname <type>
        , title <type>
        , company <type>
        , address <type>
        , address2 <type>
        , city <type>
        , state <type>
        , zip <type>
        , country <type>
        , stamptime <type>
    )
    
    UPDATE a
    SET a.Downloaded = 1
    OUTPUT Inserted.name, Inserted.lastname, Inserted.title, etc. INTO @TEMPTABLE
    FROM lead a
    WHERE ((@DateTo IS NULL AND @DateFrom IS NULL) OR (a.stamptime BETWEEN @DateTo AND @DateFrom))
    
    SELECT * FROM @TEMPTABLE
    
    03.02.2012
    Новые материалы

    Я предполагаю, что вы имеете в виду методы обработки категориальных данных.
    Я предполагаю, что вы имеете в виду методы обработки категориальных данных. Пожалуйста, проверьте мой пост Инструментарий специалиста по данным для кодирования категориальных переменных в..

    Игра в прятки с данными
    Игра в прятки с данными Я хотел бы, чтобы вы сделали мне одолжение и ответили на следующие вопросы. Гуглить можно в любое время, здесь никто не забивается. Сколько регионов в Гане? А как..

    «Раскрытие математических рассуждений с помощью Microsoft MathPrompter и моделей больших языков»
    TL;DR: MathPrompter от Microsoft показывает, как использовать математические рассуждения с большими языковыми моделями; 4-этапный процесс для улучшения доверия и рассуждений в математических..

    Раскройте свой потенциал в области разработки мобильных приложений: Абсолютная бесплатная серия
    Глава 6: Работа в сети и выборка данных Глава 1: Введение в React Native Глава 2: Основы React Native Глава 3: Создание пользовательского интерфейса с помощью React Native Глава 4:..

    Все о кейсах: Camel, Snake, Kebab & Pascal
    В программировании вы сталкивались с ними при именовании переменной, класса или функции. Поддержание согласованности типов и стилей случаев делает ваш код более читабельным и облегчает совместную..

    Как работает дистанционное парное программирование и почему оно может изменить вашу жизнь
    Серебряная пуля от одиночества и отвлекающих факторов во время обучения программированию Независимо от того, работаете ли вы или учитесь удаленно, велика вероятность, что одиночество и..

    🔥🔥👉Питон 🆚Javascript👈🔥🔥
    Сегодня Python и Javascript потрясают мир в области ИТ. Все хотят выучить Python и Javascript, чтобы получить высокооплачиваемую работу. Различные фреймворки Python и Javascript расширяют..