powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Помогите, плиз, с EXECUTE STATEMENT
25 сообщений из 37, страница 1 из 2
Помогите, плиз, с EXECUTE STATEMENT
    #32490167
FAnatoliy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет всем.
Пишу хранимую процедуру, но код 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
Помогите, плиз, с EXECUTE STATEMENT
    #32490182
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно я правильно оформлю код процедуры, или вы настаиваете на этом симпатичном зелененьком цвете, но без интдентинга? ;)

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

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

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


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