Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

IBStoredProc не выдает результатов

247
01 мая 2008 года
wanja
1.2K / / 03.02.2003
Есть у меня база Interbase, а в ней хранимая процедура. Когда ее запускаю в IBExpert - исправно выдает таблицу результатов. В Delphi кладу на форму IBStoredProc, Задаю все что надо, запускаю (ExecProc) - результатов нет!
11
01 мая 2008 года
oxotnik333
2.9K / / 03.08.2007
Цитата: wanja
Есть у меня база Interbase, а в ней хранимая процедура. Когда ее запускаю в IBExpert - исправно выдает таблицу результатов. В Delphi кладу на форму IBStoredProc, Задаю все что надо, запускаю (ExecProc) - результатов нет!



а если сделать через

 
Код:
TIBQuery::SQL::Text := "SELECT FROM ProcedureName(Params)"

так выполнится?
303
01 мая 2008 года
makbeth
1.0K / / 25.11.2004
Цитата: wanja
Есть у меня база Interbase, а в ней хранимая процедура. Когда ее запускаю в IBExpert - исправно выдает таблицу результатов. В Delphi кладу на форму IBStoredProc, Задаю все что надо, запускаю (ExecProc) - результатов нет!


Вызов ExecProc предназначен для хранимых процедур, которые не возвращают набор данных. Для процедур, возвращающих набор данных используй метод Open, либо Active:=true.

247
09 мая 2008 года
wanja
1.2K / / 03.02.2003
Пробовал. Говорит "Use ExecProc for Procedure. Use TQuery for Select procedures".
20K
21 мая 2008 года
yager84
37 / / 15.05.2007
Цитата: wanja
Пробовал. Говорит "Use ExecProc for Procedure. Use TQuery for Select procedures".



Правильно говорит. Кидай TIBQuery, в свойстве SQL пиши:

 
Код:
select * from YourStoredProc(:param1, :param2, :param3)


далее "открыть" процедуру можно методом IBQuery1.Open или IBQuery1.Active:=True
247
23 мая 2008 года
wanja
1.2K / / 03.02.2003
Теперь говорит: Procedure unknown
11
23 мая 2008 года
oxotnik333
2.9K / / 03.08.2007
код процедуры (определение ее в SQL) и код вызова можно глянуть?
247
24 мая 2008 года
wanja
1.2K / / 03.02.2003
Процедура
Код:
ALTER PROCEDURE "Poisk_po_plany" (
    "semestr" SMALLINT,
    "kurs" SMALLINT,
    "nazvanie_specialnosti" VARCHAR(255))
RETURNS (
    "FIO_prepodavatelya" VARCHAR(255),
    "nazvanie_predmeta" VARCHAR(255))
AS
DECLARE VARIABLE "id_specialnosti" INTEGER;
begin
FOR SELECT "ID_specialnosti"
      FROM "specialnost"
      where "specialnost"."nazvanie_specialnosti"=:"nazvanie_specialnosti"
      INTO :"id_specialnosti"
  DO
  BEGIN
    SUSPEND;
  END

FOR SELECT "nazvanie_predmeta","FIO_prepodavatelya"
      FROM "predmet", "plann", "prepodavatel"
      where "plann"."kurs"=:"kurs" and "plann"."semestr"=:"semestr" and "plann"."ID_specialnosti"=:"id_specialnosti" and "predmet"."ID_predmeta"= "plann"."ID_predmeta"  and "prepodavatel"."ID_prepodavatelya"= "plann"."ID_prepodavatelya"
     order by "nazvanie_predmeta"
      INTO :"nazvanie_predmeta",  :"FIO_prepodavatelya"
  DO
  BEGIN
    SUSPEND;
  END
end

Вызов
 
Код:
select * from Poisk_po_plany(:semestr,:kurs,:nazvanie_specialnosti,:FIO_prepodavatelya,:nazvanie_predmeta)
11
24 мая 2008 года
oxotnik333
2.9K / / 03.08.2007
 
Код:
SELECT* FROM Poisk_po_plany(:semestr,:kurs,:nazvanie_specialnosti)


Че то мне кажется что так правильней ее вызвать, а возвратит она таблицу:

FIO_prepodavatelya VARCHAR(255),
nazvanie_predmeta VARCHAR(255))
247
25 мая 2008 года
wanja
1.2K / / 03.02.2003
Все равно Procedure unknown. Может в настройках что-то не то? (Сделать там что-нибудь Active)?
11
25 мая 2008 года
oxotnik333
2.9K / / 03.08.2007
она называется "Poisk_po_plany"
В кавычках!!!
или из определения кавычки убрать или в вызывающем запросе их поставить
247
27 мая 2008 года
wanja
1.2K / / 03.02.2003
Заработало!
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог