Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Помогите, плиз, с EXECUTE STATEMENT / 25 сообщений из 37, страница 1 из 2
21.04.2004, 16:17
    #32490167
FAnatoliy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, плиз, с EXECUTE STATEMENT
Привет всем.
Пишу хранимую процедуру, но код EXECUTE STATEMENT все время возвращает REC_COUNT= 0 (хотя присутствует запись).

Код процедуры
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
CREATE PROCEDURE ADD_NEW_RECORD (
    TABLE_NAME VARCHAR (30 ),
    TABLE_NAME_ID VARCHAR (30 ),
    TABLE_PARAM VARCHAR (30 ))
RETURNS (
    TABLE_ID INTEGER)
AS
DECLARE REC_COUNT INT;
DECLARE OLD_ID INT;
DECLARE CURR_ID INT;
BEGIN
  CURR_ID =  0 ;
  OLD_ID =  0 ;
  REC_COUNT =  0 ;
  EXECUTE STATEMENT 'SELECT Count( ' || TABLE_NAME_ID || ' ) FROM '|| TABLE_NAME INTO :REC_COUNT;

  IF (:REC_COUNT <>  0 ) THEN
  BEGIN
    FOR EXECUTE STATEMENT 'SELECT ' || TABLE_NAME_ID || ' FROM '|| TABLE_NAME||' order by ' || TABLE_NAME_ID INTO :CURR_ID
    DO
    BEGIN
      IF (OLD_ID  +1  <> CURR_ID) THEN
      BEGIN
        CURR_ID = OLD_ID  +1 ;
        BREAK;
      END
      SUSPEND;
    END
  END
  ELSE CURR_ID =  1 ;

  EXECUTE STATEMENT 'INSERT INTO ' || TABLE_NAME || '(' || TABLE_NAME_ID || ', ' || TABLE_Param || ') VALUES (' || CURR_ID || ', '|| CURR_ID || ' )';
  TABLE_ID = CURR_ID;
  SUSPEND;
END
...
Рейтинг: 0 / 0
21.04.2004, 16:21
    #32490182
fedd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, плиз, с EXECUTE STATEMENT
можно я правильно оформлю код процедуры, или вы настаиваете на этом симпатичном зелененьком цвете, но без интдентинга? ;)

местный модератор
...
Рейтинг: 0 / 0
21.04.2004, 16:23
    #32490190
FAnatoliy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, плиз, с EXECUTE STATEMENT
Можно
...
Рейтинг: 0 / 0
21.04.2004, 16:30
    #32490215
FreemanZAV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, плиз, с EXECUTE STATEMENT
все время возвращает REC_COUNT= 0
Где возвращает?
...
Рейтинг: 0 / 0
21.04.2004, 16:41
    #32490249
FAnatoliy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, плиз, с EXECUTE STATEMENT
При отладке строки
EXECUTE STATEMENT 'SELECT Count( ' || TABLE_NAME_ID || ' ) FROM '|| TABLE_NAME INTO :REC_COUNT;

Смотрю на значение переменной.
...
Рейтинг: 0 / 0
21.04.2004, 16:43
    #32490257
FreemanZAV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, плиз, с EXECUTE STATEMENT
В какой среде разработки?
...
Рейтинг: 0 / 0
21.04.2004, 16:46
    #32490271
FAnatoliy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, плиз, с EXECUTE STATEMENT
Использую IBExpert 2.5 и Delphi 7.0.
...
Рейтинг: 0 / 0
21.04.2004, 16:50
    #32490277
fedd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, плиз, с EXECUTE STATEMENT
FAnatoliy,

по поводу раскраски - не мучайтесь, плз! в Интернет Эксплорере можно просто выделить текст на sql, который хочется оформить, и нажать кнопку SRC. Вокруг выделенного текста поставятся символы [SRС][/SRС], которые при отображении подкрасят текст и учтут отступы..... используйте кнопку Предваритеьлный просмотр
...
Рейтинг: 0 / 0
21.04.2004, 16:51
    #32490281
FreemanZAV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, плиз, с EXECUTE STATEMENT
Проверь параметры TABLE_NAME_ID и TABLE_NAME. Так же проверь Database Registration Info->Server Version (должно быть Firebird 1.5)
...
Рейтинг: 0 / 0
21.04.2004, 16:59
    #32490299
FAnatoliy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, плиз, с EXECUTE STATEMENT
А как же, все сразу проверяется. Все остальные параметры в норме.
Database Registration Info->Server Version установлено в Firebird 1.5.
...
Рейтинг: 0 / 0
21.04.2004, 17:01
    #32490306
FreemanZAV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, плиз, с EXECUTE STATEMENT
А такое происходит со всеми таблицами или с определенной таблицей?
...
Рейтинг: 0 / 0
21.04.2004, 17:05
    #32490328
FAnatoliy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, плиз, с EXECUTE STATEMENT
Смотрел только на одной, сейчас проверю еще на других.
...
Рейтинг: 0 / 0
21.04.2004, 17:14
    #32490370
FAnatoliy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, плиз, с EXECUTE STATEMENT
И на остальных таже беда.
Это ХП не так работает.
...
Рейтинг: 0 / 0
21.04.2004, 17:19
    #32490390
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, плиз, с EXECUTE STATEMENT
Это IBE не так работает
...
Рейтинг: 0 / 0
21.04.2004, 17:25
    #32490412
FAnatoliy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, плиз, с EXECUTE STATEMENT
2Мимопроходящий
Запускаю программу - получаю ошибку о нарушении первичного ключа (в теле ХП добавляется строка). Так это IBE глючит??
...
Рейтинг: 0 / 0
21.04.2004, 17:28
    #32490421
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, плиз, с EXECUTE STATEMENT
Читай про генераторы и не ешь на ночь сырых помидоров.
...
Рейтинг: 0 / 0
21.04.2004, 17:30
    #32490433
FAnatoliy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, плиз, с EXECUTE STATEMENT
Генераторы я уже давно сделал, но здесь мне нужно именно так.
А свои детски комментарии прошу оставить при себе.
...
Рейтинг: 0 / 0
21.04.2004, 17:39
    #32490465
FAnatoliy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, плиз, с EXECUTE STATEMENT
Изменил Count на Max - тот же результат.
EXECUTE STATEMENT 'SELECT Max( ' || TABLE_NAME_ID || ' ) FROM '|| TABLE_NAME INTO :REC_COUNT;
...
Рейтинг: 0 / 0
21.04.2004, 17:54
    #32490509
FAnatoliy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, плиз, с EXECUTE STATEMENT
Если REC_COUNT в начале не обнулять, то он так и остается NULL.
...
Рейтинг: 0 / 0
21.04.2004, 17:56
    #32490517
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, плиз, с EXECUTE STATEMENT
А если ему в начале присвоить 1, то так и останется 1.
...
Рейтинг: 0 / 0
21.04.2004, 18:06
    #32490550
fedd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, плиз, с EXECUTE STATEMENT
почему?
...
Рейтинг: 0 / 0
21.04.2004, 18:09
    #32490565
FAnatoliy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, плиз, с EXECUTE STATEMENT
Почему не присваивается?
Не знаю, наверное EXECUTE STATEMENT не выполняется.
Это меня и интересует.
...
Рейтинг: 0 / 0
21.04.2004, 18:09
    #32490566
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, плиз, с EXECUTE STATEMENT
Потому что он делает SELECT Max() из пустой таблицы
...
Рейтинг: 0 / 0
21.04.2004, 18:15
    #32490587
fedd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, плиз, с EXECUTE STATEMENT
Ну ты телепат!!! Ждем подтверждения...
...
Рейтинг: 0 / 0
21.04.2004, 18:20
    #32490598
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, плиз, с EXECUTE STATEMENT
Он ни за что не признается. Скажет что это глюк FB!
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Помогите, плиз, с EXECUTE STATEMENT / 25 сообщений из 37, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]