На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
[!] Как относитесь к модерированию на этом форуме? Выскажите свое мнение здесь
  
> Вызов хранимой процедуры SQL2005 Express , Запрос на табличный вывод результата хранимой процедуры SQL-сервера 2005
    Есть хранимая процедура (pPolsq) на SQL 2005 Express с одним, в процедуре же и инициализируемом, параметром (Inicials):
    Цитата
    USE [tatApril11]
    Declare @Inicials nvarchar(35)
    Set @Inicials='ИВАНОВ В И'
    SELECT Distinct mibAPACFAM, mibAPAC.Mes Where mibAPACFAM=@Inicials;
    return

    В SQL Server Management Studio Express процедура выполняется без проблем, когда же я пытаюсь в Builder6 из компонента ADOQuery вызвать её сформировав строку запроса вот так:
    Цитата
    select * from pPolsq()

    то выходит ошибка: "Недопустимое имя объекта "pPolsq"". Никакие переименования процедуры не помогают. А вот если вместо имени процедуры поставить имя любой таблицы той же SQL-базы, то всё выполняеься прекрасно. Мне кажется, что всё дело в синтаксисе вызова процедуры, но найти правильный не могу. Подскажите, пожалуйста, кто знает.
      Вроде бы нужно так:
      ExpandedWrap disabled
        ADOQuery1->SQL->Text = L"exec pPolsq";
        ADOQuery1->Open();
         
        if(ADOQuery1->Active) {
          // do
        }
        Цитата mirra88 @
        Мне кажется, что всё дело в синтаксисе вызова процедуры, но найти правильный не могу. Подскажите, пожалуйста, кто знает.

        правилно считаеш. процедура выполняется камандой execute или коротко exec. в from можно ставить имя таблицы, вьюшки или табличной функции
          Спасибо за помощь. Вопрос мне удалось решить (кое чем мне сильно помогли ещё и на на другом форуме). Вначале на SQL-сервере я создаю процедуру (pLocTabl) вот такого содержания:
          ExpandedWrap disabled
            USE [tatApril11]
             Declare @Inicials nvarchar(35)
             Set @Inicials='ИВАНОВ В И'
             SELECT Distinct mibAPAC.FAM, mibAPAC.Mes
             INTO #LocTable  
             Where mibAPAC.FAM=@Inicials;
            return

          (т. е. использую временную таблицу LocTable)
          А потом вот таким образом вызываю её в Builder (это меня artsb научил, спасибо):
          ExpandedWrap disabled
            ADOQuery1->Close();
             ADOQuery1->SQL->Text = "exec pLocTabl";
             ADOQuery1->Open();
            Пробовали TStoredProc?
              Bas, ты хотел скозать TADOStoredProc?
                Пока ещё не пробовала
                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                0 пользователей:


                Рейтинг@Mail.ru
                [ Script execution time: 0,0689 ]   [ 18 queries used ]   [ Generated: 21.04.25, 09:15 GMT ]