Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Вызов хранимой процедуры SQL2005 Express


Автор: mirra88 3.7.2011, 19:31
Есть хранимая процедура (pPolsq) на SQL 2005 Express с одним, в процедуре же и инициализируемом, параметром (Inicials):
Код

USE [tatApril11]
 Declare @Inicials nvarchar(35)
 Set @Inicials='ИВАНОВ В И'
 SELECT Distinct mibAPAC.FAM, mibAPAC.Mes  Where mibAPAC.FAM=@Inicials;
return

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

select * from pPolsq()

то выходит ошибка: "Недопустимое имя объекта "pPolsq"". Никакие переименования процедуры не помогают. А вот если вместо имени процедуры поставить имя любой таблицы той же SQL-базы, то всё выполняеься прекрасно. Мне кажется, что всё дело в синтаксисе вызова процедуры, но найти правильный не могу. Подскажите, пожалуйста, кто знает. 

Автор: DonPager 4.7.2011, 08:42
Не знаю как для мс, но для мускула это выглядит так:
Код

CALL pPolsq();

Автор: artsb 4.7.2011, 10:13
Вроде бы нужно так:
Код

ADOQuery1->SQL->Text = L"exec pPolsq";
ADOQuery1->Open();

if(ADOQuery1->Active) {
  // do
}

Автор: mirra88 20.7.2011, 17:41
Спасибо всем, кто мне помог, выйти из положения удалось так:
Код

USE [tatApril11]
 Declare @Inicials nvarchar(35)
 Set @Inicials='ИВАНОВ В И'
 SELECT Distinct mibAPAC.FAM, mibAPAC.Mes 
 INTO #LocTable  
 Where mibAPAC.FAM=@Inicials;
return

(т. е. использовала временную таблицу LocTable)
А потом вот таким образом вызвала её в Builder:
 
Код

ADOQuery1->Close();
 ADOQuery1->SQL->Text = "exec pLocTabl";
 ADOQuery1->Open();


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)