Записать что только что выбрали без временной таблицы? - PullRequest
2 голосов
/ 27 июня 2011

В хранимой процедуре я выбираю из таблицы, используя переданные переменные. Затем я хочу записать, что выбрано. Есть ли способ сделать это без использования временной таблицы или табличной переменной?

Оператор выбора:

Select userId, firstName, lastName, address
from myTable
where userName = @userName and password = @password

Затем я хочу зарегистрировать userId, firstName, lastName и адрес, которые были выбраны. Итак:

Insert into loginLog...[results gotten above]

Примечание. Я хочу регистрировать его, только если возвращен только один результат. Если возвращается более одного результата, я все еще хочу выбрать все результаты, но не хочу регистрировать его.

1 Ответ

2 голосов
/ 27 июня 2011

Используйте ваш select для заполнения локальных переменных в хранимой процедуре.Зарегистрируйте результаты, затем select переменную, чтобы вернуть их вызывающей стороне:

declare
  @userID    int          ,
  @firstName varchar(255) ,
  @lastName  varchar(255) ,
  @address   varchar(255)   ,
  @rows      int

select @userID = userId ,
       @firstName = firstName ,
       @lastName  = lastName  ,
       @address   = address
from myTable
where ...

set @rows = @@rowcount

insert loginLog
select @userID , @firstName , @lastName , @address
where @rows > 0

select userID = @userID ,
       firstName  = @firstName ,
       lastName   = @lastName  ,
       address    = @address
where @rows > 0
...