Почему я не получаю результатов при возврате результатов сохраненного процесса?
На первом шаге того, что будет включать в себя несколько временных таблиц и вызов хранимых процедур, а затем объединение, у меня будут первые шаги ребенка (основываясь на ответе Филипа Келли здесь):
IF OBJECT_ID ( 'RockBottomAmalgamated', 'P' ) IS NOT NULL
DROP PROCEDURE RockBottomAmalgamated;
GO
CREATE PROC [dbo].[RockBottomAmalgamated]
@BegDate datetime,
@EndDate datetime,
@SortBy varchar(20)
AS
CREATE TABLE #BaseCraftworksTable
(
Unit varchar(25) not null
,ShortName varchar(50)
,ItemCode varchar(25) not null
,Description varchar(100) not null
,Price varchar(25)
,Variance varchar(25)
,VarianceAverage varchar(10)
,PriceWeek varchar(50)
,Week varchar(10) not null
)
INSERT INTO #BaseCraftworksTable (Unit, ShortName, ItemCode, Description, Price,
Variance, VarianceAverage, PriceWeek, Week)
EXECUTE sp_ViewPriceMatrix_Variance_RockBottomRollup_Craftworks
@BegDate = @BegDate
,@EndDate = @EndDate
,@SortBy = @SortBy
SELECT * FROM #BaseCraftworksTable
... но вызов этого SP (RockBottomAmalgamated) ничего не возвращает; все же вызов "sp_ViewPriceMatrix_Variance_RockBottomRollup_Craftworks" возвращает записи. Почему это так, поскольку до сих пор это просто вставка некоторых данных, возвращаемых из sp_ViewPriceMatrix_Variance_RockBottomRollup_Craftworks, в #BaseCraftworksTable, который затем возвращает свое содержимое?
ОБНОВИТЬ
При попытке использовать джаз "FROM OPENROWSET()" с этим кодом:
IF OBJECT_ID ( 'RockBottomAmalgamated', 'P' ) IS NOT NULL
DROP PROCEDURE RockBottomAmalgamated;
GO
CREATE PROC [dbo].[RockBottomAmalgamated]
@BegDate datetime,
@EndDate datetime,
@SortBy varchar(20)
AS
CREATE TABLE #BaseCraftworksTable
(
Unit varchar(25)
,ShortName varchar(50)
,ItemCode varchar(25)
,Description varchar(100)
,Price varchar(25)
,Variance varchar(25)
,VarianceAverage varchar(10)
,PriceWeek varchar(50)
,Week varchar(10)
)
SELECT * INTO #BaseCraftworksTable FROM OPENROWSET(
'SQLNCLI', 'Server=PLATYPUSQL42.za.ABCData;Trusted_Connection=yes;',
'EXEC sp_ViewPriceMatrix_Variance_RockBottomRollup_Craftworks
@BegDate = @BegDate
,@EndDate = @EndDate
,@SortBy = @SortBy');
SELECT * FROM #BaseCraftworksTable
... Я получил сообщение об ошибке о существующем BaseCraftworksTable. Поэтому я добавил это прямо перед "CREATE TABLE":
IF OBJECT_ID('#BaseCraftworksTable', 'U') IS NOT NULL
DROP TABLE #BaseCraftworksTable;
... но это не помогло.
Поэтому я прокомментировал часть CREATE TABLE; это покончило с предыдущей ошибкой, но вызвало их вместо:
Error 53: Named Pipes Provider: Could not open a connection to SQL Server [53].
OLE DB provider "SQLNCLI11" for linked server "(null)" returned message "Login timeout expired".
OLE DB provider "SQLNCLI11" for linked server "(null)" returned message "A network-related or instance-specific error has occurred while establishing a connection to SQL Server. Server is not found or not accessible. Check if instance name is correct and if SQL Server is configured to allow remote connections. For more information see SQL Server Books Online.".
Предоставленное значение соединения ("PLATYPUSQL42.za.ABCData") - это именно то, что я выбрал в раскрывающемся списке "Соединение" в LINQPad (с "SQL", выбранным из раскрывающегося списка "Язык"); это работает в LINQPad; что ожидает вызов OPENROWSET в качестве второго параметра?
ОБНОВЛЕНИЕ 2
Я, очевидно, не гуру SQL, но меня удивило, что я мог закомментировать мой оператор CREATE TABLE, заново создать SP, запустить его, и не было бы ошибочных сообщений о несуществующей таблице. Поэтому я предполагаю, что если таблица не была определена, она создается автоматически на основе того, что находится внутри параметров в предложении INSERT INTO (). Имеет смысл / приятная особенность; но в таком случае, в чем было бы преимущество явного определения таблицы?
ПРИМЕЧАНИЕ: я все еще не получаю результатов, хотя; Я попытался это подумать, может быть, проблема была в том, как я определял одно или несколько полей в таблице. Но нет, есть нечто иное, что вызывает проблему [s]...