Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблемы с sp_executesql + #tmp_table, sql server 2000 не видит таблицу 
:(
    Опции темы
sergey_85
Дата 2.3.2011, 07:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 445
Регистрация: 17.4.2007
Где: Россия, Челябинск

Репутация: нет
Всего: 1



Привет!

У меня такая ситуация: Есть процедура p311_kich_LoadFilteredMsgs, в которой идет выполнение sql через sp_executesql, далее после выполнения sp_executesql ниже следует инструкция exec [dbo].[p311_kich_LoadMsgs], в которой используется временная таблица, созданная в sp_executesql.

В ответ на запрос выдается следующая ошибка: 
Код

[Microsoft][ODBC SQL Server Driver][SQL Server]Invalid object name '#tmp_p311_LoadMsgs'.


Но, когда я помещаю выполнение exec [dbo].[p311_kich_LoadMsgs] в sp_executesql, то все работает!!?
Странно, потому что при выполнени запроса я использую одно соединение и временная таблица должна быть видна!

хотелось бы узнать в чем дело?

выдает ошибку
Код

set @sql3 = 'select top 500 m.ID into #tmp_p311_LoadMsgs' + 
    'from tla_MessOpenCloseAcc        m (nolock)' + 
    'join top_Chains                    c (nolock)    on c.ID = m.IDChain' +
    'join #tmp_p311_LoadFilteredMsgs    t            on t.State = isnull(m.FSSState, 0)' +
    'where ' +
        '(@dBegin is null or case @WhichDate when 0 then m.DateOper when 1 then c.Date end >= @dBegin) and' +
        '(@dEnd     is null or case @WhichDate when 0 then m.DateOper when 1 then c.Date end <= @dEnd    ) and' +
        'm.IDAccount = isnull(@IDAccount, m.IDAccount) and' +
        'm.IDClient = isnull(@IDClient, m.IDClient) --exec [dbo].[p311_kich_LoadMsgs]' 

if @stateType = 0
begin
    EXEC sp_executesql 
    @sql0, 
    N'@WhichDate    tinyint , @dBegin smalldatetime, @dEnd    smalldatetime, @IDAccount T_CBIdent, @IDClient ClientID', 
    @WhichDate= @WhichDate, @dBegin = @dBegin, @dEnd=@dEnd, @IDAccount=@IDAccount, @IDClient=@IDClient

    exec [dbo].[p311_kich_LoadMsgs]  
end


а так все ок!
Код

set @sql3 = 'select top 500 m.ID into #tmp_p311_LoadMsgs' + 
    'from tla_MessOpenCloseAcc        m (nolock)' + 
    'join top_Chains                    c (nolock)    on c.ID = m.IDChain' +
    'join #tmp_p311_LoadFilteredMsgs    t            on t.State = isnull(m.FSSState, 0)' +
    'where ' +
        '(@dBegin is null or case @WhichDate when 0 then m.DateOper when 1 then c.Date end >= @dBegin) and' +
        '(@dEnd     is null or case @WhichDate when 0 then m.DateOper when 1 then c.Date end <= @dEnd    ) and' +
        'm.IDAccount = isnull(@IDAccount, m.IDAccount) and' +
        'm.IDClient = isnull(@IDClient, m.IDClient) exec [dbo].[p311_kich_LoadMsgs]' 

if @stateType = 0
begin
    EXEC sp_executesql 
    @sql0, 
    N'@WhichDate    tinyint , @dBegin smalldatetime, @dEnd    smalldatetime, @IDAccount T_CBIdent, @IDClient ClientID', 
    @WhichDate= @WhichDate, @dBegin = @dBegin, @dEnd=@dEnd, @IDAccount=@IDAccount, @IDClient=@IDClient

    --exec [dbo].[p311_kich_LoadMsgs]  
end


ps: sql server 2000 

Это сообщение отредактировал(а) sergey_85 - 2.3.2011, 07:40


--------------------
A good design always pays off.
PM MAIL   Вверх
metis
Дата 24.3.2011, 10:21 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 84
Регистрация: 29.1.2008

Репутация: нет
Всего: нет



Может надо вместо 
Код

EXEC sp_executesql 
    @sql0, 

написать 
 
Код

EXEC sp_executesql 
    @sql3 , 



Это сообщение отредактировал(а) metis - 25.3.2011, 12:05
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS SQL"
Akina

Akina

Запрещается!

Публиковать ссылки и обсуждать взлом чего бы то ни было.

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы составления неспецифических запросов рассматриваются здесь
  • Используйте теги [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS SQL Server | Следующая тема »


 




[ Время генерации скрипта: 0.0391 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.