Почему я не получаю результатов при возврате результатов сохраненного процесса?

На первом шаге того, что будет включать в себя несколько временных таблиц и вызов хранимых процедур, а затем объединение, у меня будут первые шаги ребенка (основываясь на ответе Филипа Келли здесь):

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]...

0 ответов

Другие вопросы по тегам