Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.06.06;
Скачать: [xml.tar.bz2];

Вниз

Ошибка в ХП   Найти похожие ветки 

 
Mike Kouzmine ©   (2004-05-14 23:52) [0]

К вечеру голова не соображает вообще...

ALTER PROCEDURE ADD_FILIAL (
   SCLAD INTEGER)
AS
DECLARE VARIABLE NUM INTEGER;
DECLARE VARIABLE NAME VARCHAR(20) CHARACTER SET WIN1251;
DECLARE VARIABLE FILIAL INTEGER;
begin
 FILIAL = GEN_ID(GEN_SCLADS_ID,1);
 INSERT INTO SCLADS
   VALUES(:FILIAL, "НОВЫЙ ФИЛИАЛ",1,1);
 FOR SELECT NUM, NAME FROM GROUPS
  WHERE SCLAD = :SCLAD INTO :NUM, :NAME DO
   BEGIN
     INSERT INTO GROUPS
       VALUES(:FILIAL , :NUM, :NAME);
   END
end
SCLADS(INTEGER,VARCHAR,INTEGER,INTEGER)
GROUPS(INTEGER,INTEGER,VARCHAR)

Ошибка
An error was found in the application program input parameters for the SQL statement.
Dynamic SQL Error.
SQL error code = -804.
Count of read-write columns does not equal count of values.

Работаю в IB Expert


 
Курдль ©   (2004-05-15 00:06) [1]


> INSERT INTO SCLADS
>    VALUES(:FILIAL, "НОВЫЙ ФИЛИАЛ",1,1);

Здесь всего хватает? Я бы поля прописал...


 
Mike Kouzmine ©   (2004-05-15 00:13) [2]

Курдль ©   (15.05.04 00:06) [1] Если посмотреть пониже текста процедуры, то можно заметить структуры используемых таблиц.


 
Курдль ©   (2004-05-15 00:26) [3]

Ну а строчкой ниже: FOR SELECT NUM, NAME FROM GROUPS
В переменной типа запись SCLADS 4 поля, а выбираются для нее 2


 
DrPass ©   (2004-05-15 00:29) [4]

Я всегда придерживаюсь нескольких правил (просто так удобнее), например:
1. При выполнении INSERT явно указываю поля, по которым идет вставка
2. Не допускаю совпадений переменных и параметров с именами полей
3. Не делаю операций вида
FOR SELECT NUM, NAME FROM GROUPS ... DO...
    INSERT INTO GROUPS
      VALUES(:FILIAL , :NUM, :NAME);
потому как процедура, выбирающая записи и тут же вставляющая их в ту же самую таблицу, вполне способна вогнать IB в бесконечный цикл выборки-вставки (это фича такая)
Начни с реализации первого правила, если судить по твоей ошибке


 
Mike Kouzmine ©   (2004-05-15 00:30) [5]

Курдль ©   (15.05.04 00:26) [3] Не совсем понял. Поясни пожалуйста.


 
Mike Kouzmine ©   (2004-05-15 00:34) [6]

DrPass ©   (15.05.04 00:29) [4] Наверное ты прав, попробую. Но дело не в этом. Повидимому. Нормально компилировалась, но я изменил входящие параметры, после этого появилась ошибка.


 
Mike Kouzmine ©   (2004-05-15 00:38) [7]

DrPass ©   (15.05.04 00:29) [4] А как поступать, если мне надо выбрать группу записей из таблицы и в нее же вставить эти же записи, но с другим ключем?


 
Курдль ©   (2004-05-15 00:39) [8]

Я не применял такие конструкции, но сдается, что одновременно и
VALUES и FOR SELECT употреблять не следует.


 
DrPass ©   (2004-05-15 00:46) [9]

Я же не говорю, что она обязательно зациклится - это зависит от данных. Можно, например, сначала выбрать, потом вставить:
insert into groups(sclad, num, name) select from groups(:sclad, num, name)...
А если еще подумать, то ошибка, похоже, возникает вообще не в процедуре - а где-нибудь в приложении, которое ее вызывает.


 
Mike Kouzmine ©   (2004-05-15 00:47) [10]

Курдль ©   (15.05.04 00:39)
DrPass ©   (15.05.04 00:29)

Спасибо. Удалил процедуру, написал заново - заработало...


 
DrPass ©   (2004-05-15 00:50) [11]

Очепятка, имел в виду
insert into groups(sclad, num, name) select :sclad, num, name from groups...



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2004.06.06;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.038 c
3-1084527737
}|{yk
2004-05-14 13:42
2004.06.06
Никто не знает как поще преобразовать timestamp в строку типа


1-1085651976
Dysan
2004-05-27 13:59
2004.06.06
хранение обьектов?


1-1085226382
zep
2004-05-22 15:46
2004.06.06
перемещение Image a


14-1084963366
GIL
2004-05-19 14:42
2004.06.06
А что случилось?


4-1082374540
Сережа550
2004-04-19 15:35
2004.06.06
WM_LBUTTONDOWN и WM_LBUTTONUP





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский