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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Получение данных из процедуры через select. Пробле, Получение данных из процедуры через sele 
:(
    Опции темы
autotester
Дата 9.6.2006, 10:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



запости куда нить
---------- Защищенная информация ----------
1.
Господа, подскажите пожалуйста почему в IBConsole при выполнении select из любой процедуры
Код

select * from test


Код

CREATE PROCEDURE TEST 
RETURNS 

  N INTEGER 

AS 
begin 
 N=23; 
end 


выкидывает ошибку "Unknown Error - Can't retrieve plan."  Заранее благодарен.

2. 
И еще простите за чайниковский вопрос: после создания  ХП смотрю ее текст в базе, текст начинается и заканчивается командой commit work. Получается перед стартом процедуры все изменения транзакции сохранятся и после выполнения? Если это так, то как от них избавится, если мне например нужно выполнить несколько процедур а потом уже по результату выполнения решить коммитить или нет. Или я чего путаю? 





M
Akella
Используйте тэг "Код"


Советую внимательно прочесть:
http://forum.vingrad.ru/forum/topic-237714.html
http://forum.vingrad.ru/forum/topic-126445.html

Это сообщение отредактировал(а) Akella - 7.9.2010, 09:54
PM MAIL   Вверх
vv3
Дата 10.6.2006, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



1. N = 23 - ради такого ХП делать... Не может сервер план создать просто потому, что нет у тебя обращения ни к одному объекту БД. Хорошенькая процедура TEST! Написал бы хотя бы так: 
Код

SELECT 23 FROM RDB$DATABASE

2. Путаешь. Учи матчасть.
В метаданных БД содержится скрипт создания процедуры и, естественно, этот скрипт оканчивается COMMIT WORK, ибо после выполнения скрипта нужно закоммитить изменения, сделанные им в системных таблицах. Начинается скрипт, правда не с COMMIT WORK, а с CREATE PROCEDURE, а верхний COMMIT от предыдущего блока... 
PM MAIL   Вверх
olek68
Дата 6.9.2010, 07:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Доброе утро.
Создаю процедуру для отбора данных с таблицы почасовой температуры :

Код

create procedure MY_TEMP (MIN_DT date,MAX_DT date)
returns (DT date,MIN_T double precision,AVG_T double precision,MAX_T double precision)
as
begin
 dt = min_dt-1;
 while (dt<max_dt)
 do
  begin dt = dt+1;
   select min(TEMPERATURE), avg(TEMPERATURE), max(TEMPERATURE) from T_TABL
   where ID=01 and (T_DATE between : dt and : dt+0.99)
   into :min_t, :avg_t, :max_t;
   suspend;
  end
end^


проверяю SQL Editor-ом  в IB Expert:

Код

select * from MY_TEMP('01.07.2010','20.07.2010')


В результате  получаю таблицу с необходимыми данными.  smile 
Создаю небольшую программку на Delphi, где в IBQuery1.SQL.Add пишу соответствующий запрос. И  жму IBQuery1.Open;
 smile 
Dynamic SQL Error
SQL error code = -204
Procedure unknown
MY_TEMP
unknown ISC error 336397208
в чём  проблема?


Это сообщение отредактировал(а) Akella - 7.9.2010, 09:55
PM MAIL   Вверх
olek68
Дата 6.9.2010, 09:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Упс.  Нашёл ошибку.  smile 
Благодарю всех кто хотел помочь но не успел…   smile 

PM MAIL   Вверх
Eugeneus2010
Дата 11.9.2010, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Видимо потому, что suspend-а не было.
PM MAIL   Вверх
TechnoMag
Дата 6.6.2016, 18:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



_ удалено

Это сообщение отредактировал(а) TechnoMag - 6.6.2016, 18:02
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Interbase"
Alex

Обязательно указание:

1. Версию InterBase (Firebird, Yaffil)

2. Способа доступа (ADO, BDE, IBX и т.д.)

  • КАК ПРАВИЛЬНО ОФОРМИТЬ КОД - ЗДЕСЬ
  • КАК ПРАВИЛЬНО УКАЗАТЬ ТЕКСТ ОШИБКИ - ЗДЕСЬ
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • FAQ раздела лежит здесь!

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

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


 




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


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

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