У меня есть хранимая процедура SQL Server 2014, которую я добавил в книгу Excel 2013 в качестве подключения к данным.
Хранимая процедура возвращает таблицу, определенную следующим образом:
create table #rollups
(
ID_INT_EXT_KEY varbinary(16) not null,
AS_OF_DATE date not null,
FOR_MONTH int not null,
FOR_YEAR int not null,
FINAL_REPORT_DEPT varchar(100) null,
PROV_NAME varchar(100) null,
EXTERNAL_FLAG bit not null,
YTD_VISITS decimal(15,2) not null default 0,
YTD_CHARGED decimal(15,2) not null default 0,
YTD_PROCS decimal(15,2) not null default 0,
MTD_VISITS decimal(15,2) not null default 0,
MTD_CHARGED decimal(15,2) not null default 0,
MTD_PROCS decimal(15,2) not null default 0,
YTD_VISITS_DIFFLASTMONTH decimal(15,2) not null default 0,
YTD_CHARGED_DIFFLASTMONTH decimal(15,2) not null default 0,
YTD_PROCS_DIFFLASTMONTH decimal(15,2) not null default 0
);
-- insert data to the temp table
-- select from the temp table
У меня нет проблем с хранимой процедурой, она работает как задумано.
Я добавил его на лист Excel как запрос OLE DB, тип команды — SQL, а текст команды — просто имя хранимой процедуры.
Он возвращает данные (несколько тысяч строк), как и ожидалось, за исключением первого столбца ID_INT_EXT_KEY (который представляет собой хэш нескольких столбцов). Колонка вообще не втягивается в лист, не пустая, не скрытая. Его просто нет. Я попытался включить Row Numbers, думая, что, может быть, это как-то связано с этим, но нет.
В SSMS столбец есть.
На самом деле это не проблема для того, для чего я его использую, но это сбивает с толку, и мне интересно, что я могу с этим поделать, за исключением изменения типов данных возвращаемой таблицы.
Редактировать:
Вопрос: учитывая, что у меня есть хранимая процедура, которая возвращает таблицу, а один из столбцов является varbinary, есть ли способ получить этот столбец в Excel (используя стандартное подключение к внешним данным), без создания или изменения каких-либо объектов базы данных?
VARBINARY(16)
- это тип данных, который не видим или, лучше сказать, отображаем... Есть 16 байт чего-то. Что, по вашему мнению, должен делать с этим Excel? Вы можете преобразовать его в HEX-строку (состоящую из 0-9 и от A до H и в основном начинающуюся с0x
, чтобы указать это. Вы можете преобразовать ее вbase64
или, возможно, преобразовать ее в тип длиной 16 байтов с довольно случайным значением. ... Что бедному Excel делать с этим значением? - person Shnugo   schedule 07.07.2016