Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.07.2011, 19:04   #1
mirra88
Пользователь
 
Регистрация: 22.04.2011
Сообщений: 23
По умолчанию Вызов хранимой процедуры SQL2005 Express

Есть хранимая процедура (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-базы, то всё выполняеься прекрасно. Мне кажется, что всё дело в синтаксисе вызова процедуры, но найти правильный не могу. Подскажите, пожалуйста, кто знает.
mirra88 вне форума Ответить с цитированием
Старый 03.07.2011, 20:10   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Странно... А я думал что функции-таблицы описываются так:
Код:
Create FUNCTION pPolsq(@Inicials nvarchar(35))
RETURNS TABLE
AS
RETURN
(
  SELECT Distinct mibAPAC.FAM, mibAPAC.Mes  Where mibAPAC.FAM=@Inicials;
)
И вызывать ее нуна:
Код:
select * from pPolsq('ИВАНОВ В И')
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.07.2011, 20:55   #3
mirra88
Пользователь
 
Регистрация: 22.04.2011
Сообщений: 23
По умолчанию

К сожалению так тоже не получается. Ни создать, ни вызвать.. Но на другом форуме мне помогли и удалось решить вопрос так.Вначале на на SQL-сервере я создала процедуру (pLocTabl) вот такого содержания:
Код:
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();

Последний раз редактировалось mirra88; 04.07.2011 в 16:20. Причина: Вопрос решён!
mirra88 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Просмотре результатов работы хранимой процедуры analyst SQL, базы данных 0 24.06.2011 19:57
ошибка 1064 при создании хранимой процедуры Grind SQL, базы данных 0 03.02.2010 00:00
Результат Хранимой процедуры в INterBase Etlau Помощь студентам 0 28.12.2009 17:38
Возврат нескольких полей из хранимой процедуры (Firеbird) Антон Ю.Б. SQL, базы данных 3 08.07.2009 08:33
Выполнение хранимой процедуры с output параметром Иванчо БД в Delphi 5 26.10.2007 14:59