Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
0 / 0 / 1
Регистрация: 04.04.2014
Сообщений: 42

Не выполняется хранимая процедура - Parametr mismatch for procedure

21.07.2014, 07:56. Показов 1740. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
День добрый. Не выполняется хранимая процедура, пишет ошибку недопустимого параметра в процедуре. в IBExpert-e процедура работает, а в делфи нет. Я так понимаю ошибка именно в вызове процедуры в делфи. Можете подсказать в чем ошибка? Данный код вызова процедуры.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
  try
    with IBQuery2 do
    begin
      if FNew then
        SQL.Text:=Format('execute procedure PROC_ZHIL(-1, '+
          '%s, %s, %s, %s, ' +
          '%s, %s, %s, %s, ' +
          '%s, %s, %s, %s)',
   [AnsiQuotedStr(f_add_arenda.Edit1.Text, ' '), f_add_arenda.Edit2.Text, AnsiQuotedStr(f_add_arenda.Edit3.Text, ' '), f_add_arenda.Edit4.Text,
    f_add_arenda.Edit5.Text, f_add_arenda.Edit6.Text, AnsiQuotedStr(f_add_arenda.Edit7.Text, ' '), AnsiQuotedStr(f_add_arenda.Edit8.Text, ' '),
    AnsiQuotedStr(f_add_arenda.Edit9.Text, ' '), AnsiQuotedStr(f_add_arenda.Edit10.Text, ' '), AnsiQuotedStr(f_add_arenda.Edit11.Text, ' '),
    f_add_arenda.Edit12.Text, AnsiQuotedStr(f_add_arenda.Edit13.Text, ' ')])
      else
        SQL.Text := Format('execute procedure PROC_ZHIL('+f_ned.IBQuery1.FieldByName('KOD_ZHIL').AsString +
          '%s, %s, %s, %s, ' +
          '%s, %s, %s, %s, ' +
          '%s, %s, %s, %s)',
          [AnsiQuotedStr(f_add_arenda.Edit1.Text, ' '), f_add_arenda.Edit2.Text, AnsiQuotedStr(f_add_arenda.Edit3.Text, ' '),
          f_add_arenda.Edit4.Text, f_add_arenda.Edit5.Text, f_add_arenda.Edit6.Text, AnsiQuotedStr(f_add_arenda.Edit7.Text, ' '),
          AnsiQuotedStr(f_add_arenda.Edit8.Text, ' '), AnsiQuotedStr(f_add_arenda.Edit9.Text, ' '), AnsiQuotedStr(f_add_arenda.Edit10.Text, ' '),
          AnsiQuotedStr(f_add_arenda.Edit11.Text, ' '),f_add_arenda.Edit12.Text, AnsiQuotedStr(f_add_arenda.Edit13.Text, ' ')]);
        Transaction.StartTransaction;
Код вызова процедуры SQL:
SQL
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
BEGIN
    IF (:p_id < 0) THEN
        BEGIN
            INSERT INTO zhilie(z_fio, z_plosh, z_nacional, z_cena, z_kol_komnat, z_etazh,
                z_raion, z_opisanie, z_srok_sdachi, z_sost_zhil, z_type_dom, z_nomer_tel,
                    z_street)
                VALUES (:p_fio, :p_plosh, :p_nacional, :p_cena, :p_kol_komnat, :p_etazh,
                            :p_raion, :p_opis, :p_srok_sdachi, :p_sost_zhil, :p_type_dom, :p_nomer_tel,
                                :p_street);
    END
    ELSE
        BEGIN
            UPDATE zhilie
                SET
                    z_fio = :p_fio,
                    z_plosh = :p_plosh,
                    z_nacional = :p_nacional,
                    z_cena = :p_cena,
                    z_kol_komnat = :p_kol_komnat,
                    z_etazh = :p_etazh,
                    z_raion = :p_raion,
                    z_opisanie = :p_opis,
                    z_srok_sdachi = :p_srok_sdachi,
                    z_sost_zhil = :p_sost_zhil,
                    z_type_dom = :p_type_dom,
                    z_nomer_tel = :p_nomer_tel,
                    z_street = :p_street
                        WHERE 
                            kod_zhil = :p_id;
        END
END
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.07.2014, 07:56
Ответы с готовыми решениями:

Не выполняется хранимая процедура
Доброго времени суток! Имеется хранимая процедура USE GO /****** Object: StoredProcedure . Script Date: 24.09.2014...

Медленно выполняется хранимая процедура
Процедура содержит в себе инструкцию Merge с переносом данных из одной тяжёлой таблицы в другую с условиями. Выполнял тот же код не как...

Не выполняется хранимая процедура MySql
Есть такой фрагмент кода, он НЕ ловит ошибку с выполнением процедуры и данных НЕ добавляет. Как сделать нормально, сколько не искал везде...

4
480 / 393 / 113
Регистрация: 24.04.2012
Сообщений: 1,632
Записей в блоге: 3
21.07.2014, 11:18
1. процедуру можно упросить. прочитай про update_or_insert.
2. посмотри что у тебя получается в IBQuery2.SQL.Text; %s - 12, а передаешь 13 Edit.Text. Не проще через параметры?
0
0 / 0 / 1
Регистрация: 04.04.2014
Сообщений: 42
21.07.2014, 12:42  [ТС]
Теперь программа ругается на самый первый Edit.



собственно может у меня ошибка в самой второй форме?
Delphi
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
procedure Tf_add_arenda.BitBtn1Click(Sender: TObject);
begin
f_ned.IBQuery2.Close;
f_ned.IBQuery2.Open;
f_ned.DBGrid1.DataSource.DataSet.Insert;
f_ned.DBGRid1.DataSource.DataSet.FieldByName('Z_FIO').AsString := Edit1.Text;
f_ned.DBGRid1.DataSource.DataSet.FieldByName('Z_PLOSH').AsString := Edit2.Text;
f_ned.DBGRid1.DataSource.DataSet.FieldByName('Z_NACIONAL').AsString := Edit3.Text;
f_ned.DBGRid1.DataSource.DataSet.FieldByName('Z_CENA').AsString := Edit4.Text;
f_ned.DBGRid1.DataSource.DataSet.FieldByName('Z_KOL_KOMNAT').AsString := Edit5.Text;
f_ned.DBGRid1.DataSource.DataSet.FieldByName('Z_ETAZH').AsString := Edit6.Text;
f_ned.DBGRid1.Datasource.DataSet.FieldByName('Z_RAION').AsString := Edit7.Text;
f_ned.DBGRid1.DataSource.DataSet.FieldByName('Z_OPISANIE').AsString := Edit8.Text;
f_ned.DBGRid1.DataSource.DataSet.FieldByName('Z_SROK_SDACHI').AsString := Edit9.Text;
f_ned.DBGRid1.DataSource.DataSet.FieldByName('Z_SOST_ZHIL').AsString := Edit10.Text;
f_ned.DBGRid1.DataSource.DataSet.FieldByName('Z_TYPE_DOM').AsString := Edit11.Text;
f_ned.DBGRid1.DataSource.DataSet.FieldByName('Z_NOMER_TEL').AsString := Edit12.Text;
f_ned.DBGRid1.DataSource.DataSet.FieldByName('Z_STREET').AsString := Edit13.Text;
f_ned.DBGrid1.DataSource.DataSet.Post;
f_ned.Show;
end;
 
procedure Tf_add_arenda.FormShow(Sender: TObject);
begin
  Label14.Caption := DateToStr(Date)
end;
 
end.
0
Эксперт Pascal/Delphi
 Аватар для xxbesoxx
1135 / 616 / 129
Регистрация: 13.02.2009
Сообщений: 3,602
23.07.2014, 12:02
Книгу почитайте, там есть много примеры и советы
Бондарь А.Г. - Interbase и Firebird практическое руководство для умных пользователей и начинающих разработчиков - 2012 Не путайте "Interbase и Firebird" с Access -ом
0
 Аватар для Bend3r
150 / 137 / 35
Регистрация: 29.07.2012
Сообщений: 709
27.07.2014, 03:01
Создайте таблицу с 2-3 полями. (с разными типами данных) И создать тестовую форму в которой вы для себе научитесь создавать запросы на INSERT. Главное разные типы полей сделайте, сначала текстовые, затем дата, потом числовой, затем вещественное и т.п. После этой тренировки вы будете точно знать, где нужны ковычки, где что.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.07.2014, 03:01
Помогаю со студенческими работами здесь

Type mismatch in parametr
int result(int mas,int n) { int i; for (i=0;i&lt;n;i++) { if(mas==0) { printf(&quot;Do finisha dobralos %d...

stored procedure int parametr
USE GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER PROCEDURE . @author nvarchar(50) = '', @id int ,

хранимая процедура
Вот хранимая процедура. она работает, но выражение SUM(D.FST)/COUNT(D.FST) она считает неправильно: поле FST заполнено десятичными...

Хранимая процедура
Добрый день! Написал хранимую процедуру, но выдает ошибку &quot;#1064 - You have an error in your SQL syntax; check the manual that...

Хранимая процедура
Что-то совсем не могу разобраться... Нужно написать хранимую процедуру, которая заполняет столбец таблицы, на основании других столбцов. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru