SQL Server - выборочная вставка полей во временную таблицу - PullRequest
2 голосов
/ 10 марта 2009

Я выполняю SP внутри SP. SP возвращает, скажем, 10 параметров. Я заинтересован только в 5 из них. Как вставить только эти 5 в временную таблицу.

Код, который у меня пока есть:

  DECLARE @tmpUnion TABLE
  (
    UnionCode VARCHAR(10),
    UnionDate DATETIME,
    UnionPosition VARCHAR(30),
    UnionInitFees BIT,
    UnionDues BIT
  )

  --getDetails returns 10 params. I need only these 5
  INSERT INTO @tmpUnion
  (UnionCode, UnionDate, UnionPosition, UnionInitFees, UnionDues)
  EXEC getDetails
        @iUserId = @OriginalLoginId

Ответы [ 3 ]

2 голосов
/ 10 марта 2009

Поместите результат getDetails в таблицу, содержащую все возвращаемые значения, затем вставьте ее из дополнительной таблицы.

Вы также можете проверить этот сайт для получения дополнительной информации о том, как обмениваться данными между хранимыми процедурами.

2 голосов
/ 10 марта 2009

Используйте OPENROWSET так:

Select 
       *
from OPENROWSET('SQLOLEDB','Data Source=Server_name;Trusted_Connection=yes;
      Integrated Security=SSPI','Execute yourdb..get_orders')

Теперь вы можете легко фильтровать набор результатов

Select 
employeeid,orderid,orderdate 
from 

OPENROWSET('SQLOLEDB','Data Source=Server_name;Trusted_Connection=yes;
       Integrated Security=SSPI','Execute yourdb..get_orders')

where
       orderdate>='19960101' and orderdate<'19970101'

Вам не нужно создавать временную таблицу, и вам также не нужно беспокоиться о структуре процедуры.

Найдено здесь

РЕДАКТИРОВАТЬ: окончательное решение перенесено из комментариев после обсуждения.

0 голосов
/ 10 марта 2009

Вы не можете. Переменная таблицы должна точно соответствовать структуре возвращаемого значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...