как выбрать конкретный набор данных из sql

#sql-server #inner-join

#sql-сервер #внутреннее объединение

Вопрос:

У меня есть sql-запрос, состоящий из двух частей 1) Который вызывает сохраненный процесс и заполняет данные во временной таблице (используя функцию OpenXML) 2) Другая часть sql, которая соединяется с этой таблицей и результирующим набором

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

Мой код Visual Studio по умолчанию выбирает первый результирующий набор, тогда как требуемый результирующий набор является вторым. sql выглядит следующим образом :

 @SQL = 'Create table #TempTable (YearEntry int, Quarter int) insert into #TempTable exec CreateTableFromXML @YearQuarterList '    
  ' Select * from ABCD inner join #TempTable T on T.YearEntry = A.Year '
  

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

 #TempTable and all the columns from A Table.
  

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

Спасибо

Комментарии:

1. Возможно, вам следует указать, какие столбцы вы хотите использовать в своем выборе. ‘*’ указывает на все столбцы из обеих таблиц. Попробуйте Select A.* или явно назовите столбцы в select.

Ответ №1:

Вместо того , чтобы

 ' Select * from ABCD inner join #TempTable T on T.YearEntry = A.Year '
  

используйте

 ' Select ABCD.* from ABCD inner join #TempTable T on T.YearEntry = A.Year '
  

Таким образом, вы указываете всю таблицу ABCD, а не все из объединения.

Комментарии:

1. Привет … в настоящее время я выбираю ABCD. Prodname, ABCD. Адрес из ABCD.

2. Я не выполняю Select * из ABCD, вместо этого я выбираю требуемые столбцы, но все равно он показывает мне два результирующих набора, и мой код Visual Studio по умолчанию принимает первый результирующий набор.

3. Если это так, то вам действительно нужно указать в вопросе то, что вы на самом деле используете…

Ответ №2:

Является ли первый результирующий набор просто (# row(s) affected) сообщением, полученным в результате выполнения инструкции INSERT? Попробуйте добавить SET NOCOUNT ON; в качестве первого оператора вашего пакета и посмотрите, поможет ли это.