Сообщение об ошибке: не удается найти таблицу 0 - PullRequest
1 голос
/ 14 июня 2011

Сначала я хотел бы извиниться за длину этого поста. Но я хочу, чтобы вы поняли всю проблему.

Я должен объединить три набора данных (dsGetForm, dsmedication_details и dsbroadband_details) и показать результат в таблице.

Иногда dsbroadband_details содержит строки, а иногда нет.

Это то, что я сейчас использую для объединения наборов данных.

if (dsGetForm != null && dsmedication_details != null && dsbroadband_details != null)
{
   dsGetForm.Tables[0].Merge(dsmedication_details.Tables[0]);
   dsGetForm.Tables[0].Merge(dsbroadband_details.Tables[0]);
}
else if (dsGetForm == null && dsmedication_details != null)
{
   dsGetForm = dsmedication_details;
}
else if (dsGetForm == null && dsbroadband_details != null )
{
   dsGetForm = dsbroadband_details;
} 

Проблема в том, что хранимая процедура (SP), которая используется для заполнения набора данных dsbroadband_details, выдает мне это сообщение об ошибке, когда результат хранимой процедуры равен нулю

Сообщение об ошибке: не удается найти таблицу 0. Описание: необработанное исключение произошло во время исполнения текущий веб-запрос. Пожалуйста, просмотрите трассировка стека для получения дополнительной информации про ошибку и где она возник в коде.

Сведения об исключении: System.ServiceModel.FaultException`1 [[System.ServiceModel.ExceptionDetail, System.ServiceModel, версия = 3.0.0.0, Culture = нейтрально, PublicKeyToken = b77a5c561934e089]]: Не могу найти таблицу 0

Это моя хранимая процедура

Alter Procedure dbo.OEA_SP_GET_BROADBAND ( 
                @appid    NUMERIC,
                @clientid NUMERIC,
                @Lang Varchar(10))
AS 
   SET nocount  ON 
   BEGIN 
  declare @PIName as varchar(100)
  declare @username as varchar(20)
  declare @pform_id as varchar(20)
  declare @pform_desc as varchar(100)
  declare @userid varchar(20)
  declare @msn tinyint

  set @PIName=''
  if exists(SELECT app_id from ext_well_new_programs (nolock) where app_id=@appid and new_prog_id='BB' and status='A')
  begin
      select @PIName=dbo.oea_fn_fetch_fullname(@appid,primary_msn,1,@lang,@clientID) 
          from app_application with (nolock)
      where app_id = @appid
  end 

  if @PIName <> ''
  begin
    select Distinct @username = dbo.oea_fn_fetch_caaname(prog.last_update_id, 30000) 
            from app_prog_submission prog (nolock) 
            where app_id = @appid

            select @userid = user_id, @msn = primary_msn 
            from app_application (nolock) 
            where app_id = @appid

            set @pform_id = 'learnmore'
    set @pform_desc = 'Cash Back for Broadband at Home'

    select @PIName as mem_name, @appid as app_id, @username as username, @pform_id as pform_id, @pform_desc as pform_desc, 0 as noncust, @userid as userid, @msn as msn
 END
     End

Я думаю, мне нужно добавить условие else после условия if @PIName <> ''.

Мой вопрос: каким должно быть это условие?

Так как мне нужны только значения оператора select (в конце) if @PIName <> '' условие, когда это условие истинно, я немного запутался, что еще должно быть?

Любая помощь очень ценится.

1 Ответ

1 голос
/ 14 июня 2011

Мне кажется, что есть случаи, когда ваш SP не возвращает никаких результатов, поэтому нет "таблицы 0". Я предпочел бы построить таблицу памяти @results, вставить данные (если они есть) в эту таблицу и сделать окончательный select mem_name, app_id, ... from @results перед выходом из SP. Или любая другая конструкция SQL, которая на самом деле возвращает набор результатов, даже пустой.

...