Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
 Аватар для hottabych1607
0 / 0 / 0
Регистрация: 09.10.2012
Сообщений: 35

При удалении строки из БД SQL возникает ошибка "ожидается параметр '@id'"

09.10.2012, 16:54. Показов 2576. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Я вообщем написал процедуру в SQL server MSE для удаление строки из БД по ID. Код получилсь такой:

SQL
1
2
3
4
5
CREATE PROCEDURE del_pokupatel(@id INT)
AS
BEGIN
DELETE FROM pokupatel WHERE @id=1
END
потом в самом Delphi 7 вызываю ее:

Delphi
1
2
3
4
5
6
7
8
9
with Unit2.DataModule2.help_ADOQuery do
begin
Close;
SQL.Clear;
SQL.Add('exec del_pokupatel');
ExecSQL;
Unit2.DataModule2.pokupatel_ADOQuery.Active:=False;
Unit2.DataModule2.pokupatel_ADOQuery.Active:=True;
end;
После запуска и использование данного, вылизает такая ошибка:

Code
1
Project Project1.exe raised exception class EOelException with message 'Процедура или функция "del_pokupatel" ожидает параметр "@id", который не был предоставлен'. Prosecc stopped. Use step or Run to continue.
Помогите, что нужно делать?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.10.2012, 16:54
Ответы с готовыми решениями:

При проведении возникает ошибка Ожидается имя таблицы <<?>> ГДЕ
фУНКЦИЯ СписатьТовар(Товар,Партия,Склад,Количество,Себестоимость) Движения.ОстаткиТовара.Записывать = Истина; Для Каждого...

При удалении строки из базы и datatable возникает ошибка "ArgumentOutOfRangeException"
Есть база данных dbf, из нее заполняется datatable1, из datatable1 вручную заполняется datatable2, к которому привязан report. (Datatable2...

При удалении файла возникает ошибка об отсутствии части пути
Вот кода для удаления файлов (и хотелось бы чтобы мог удалять и папки), но при выполнении действия выдает ошибку. Что надо исправить? ...

10
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,203
09.10.2012, 17:01
Так ты объявил в процедуре параметр, а перед вызовом его не подставил. О чем тебе по-русски и сообщили
0
 Аватар для Alex_pac
1302 / 708 / 107
Регистрация: 25.05.2011
Сообщений: 2,158
Записей в блоге: 51
09.10.2012, 17:02
exec del_pokupatel(1);
0
 Аватар для hottabych1607
0 / 0 / 0
Регистрация: 09.10.2012
Сообщений: 35
09.10.2012, 17:08  [ТС]
То есть вот так?

Delphi
1
2
3
4
5
6
7
8
9
 with Unit2.DataModule2.help_ADOQuery do
begin
Close;
SQL.Clear;
SQL.Add('exec del_pokupatel(2)');
ExecSQL;
Unit2.DataModule2.pokupatel_ADOQuery.Active:=False;
Unit2.DataModule2.pokupatel_ADOQuery.Active:=True;
end;
сделал так, попробывал пишет:

Неправильный синтаксис около конструкции "2"
0
 Аватар для Alex_pac
1302 / 708 / 107
Регистрация: 25.05.2011
Сообщений: 2,158
Записей в блоге: 51
09.10.2012, 17:16
читайте мануал по созданию функций в MS SQL

думаю оно ждет параметр который является "переменной" а не константой.

Ваще данная функция смысла не имеет ибо проще одним запросом все записать

PS запрос не верный, нужно такой :

DELETE FROM pokupatel WHERE id = @id

PSPS не силен в MS SQL
0
 Аватар для hottabych1607
0 / 0 / 0
Регистрация: 09.10.2012
Сообщений: 35
09.10.2012, 17:30  [ТС]
Исправил:

Delphi
1
2
3
4
5
create procedure del_pokupatel(@id int)
as
begin
DELETE FROM pokupatel WHERE id = @id
end
Delphi
1
2
3
4
5
6
7
8
9
 with Unit2.DataModule2.help_ADOQuery do
begin
Close;
SQL.Clear;
SQL.Add('exec del_pokupatel 2');
ExecSQL;
Unit2.DataModule2.pokupatel_ADOQuery.Active:=False;
Unit2.DataModule2.pokupatel_ADOQuery.Active:=True;
end;

Пишет: Конфликт инструкции DELETE с ограничением REFERENCE "FK_dogovor_pokupatel". Конфликт произошел в базе данных "Test", таблица "dbo.dogovor", column "id_pokupatel"
0
 Аватар для Alex_pac
1302 / 708 / 107
Регистрация: 25.05.2011
Сообщений: 2,158
Записей в блоге: 51
09.10.2012, 19:48
hottabych1607, короче учи синтаксис SQL языка
0
Эксперт Pascal/Delphi
 Аватар для xxbesoxx
1135 / 616 / 129
Регистрация: 13.02.2009
Сообщений: 3,600
10.10.2012, 04:00
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
try
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('DELETE FROM [Имя Таблици]');
ADOQuery1.SQL.Add('WHERE ID = 1');
ADOQuery1.ExecSQL;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT * FROM [Имя Таблици]');
ADOQuery1.Active:=True;
except
end;
0
 Аватар для hottabych1607
0 / 0 / 0
Регистрация: 09.10.2012
Сообщений: 35
10.10.2012, 09:39  [ТС]
Короче сделал так

Delphi
1
2
3
4
5
6
7
    with Unit2.DataModule2.pokupatel_ADOQuery do
  begin
    Close;
    SQL.Clear;
    SQL.Add('delete from pokupatel where pokupatel.id=1');
    Open;
  end;
Пишет ошибку:

Code
1
Конфликт инструкции DELETE с ограничением PERFENCE "FK_dogovor_Pokupatel". Конфликт произошел в базе данных "Test". Таблица "dbo.dogovor", column "id_pokupatel"
0
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,203
10.10.2012, 09:54
Это значит, что ты пытаешься удалить строку родительской таблицы при том, что на нее есть ссылки из дочерней таблицы (а FK создан без опции DELETE CASCADE).

PS
только не "PERFENCE", а REFERENCE
0
 Аватар для hottabych1607
0 / 0 / 0
Регистрация: 09.10.2012
Сообщений: 35
10.10.2012, 13:14  [ТС]
Так...а как это исправить? то есть чтобы удалял всю строчку по заданомму ID
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.10.2012, 13:14
Помогаю со студенческими работами здесь

Возникает ошибка при удалении динамического массива символов в деструкторе класса
Всем привет. Есть приватная переменная, указатель на строку wchar_t *pUAgent; В конструкторе я ее инициализирую: pUAgent =...

При удалении или переименовании вкладки браузера возникает ошибка ссылки на объект
Пишу веб-браузер на C#, при работе с закладками столкнулся с проблемой, в удалении и смене имени (использую xml). С самими закладками все...

возникает ошибка при использовании массива, как параметр функции
Добрый вечер. Помогите разобраться, пожалуйста. Задача: Проверьте, верно ли, что количество строк матрицы А(n*n), в которой все числа...

При удалении записи и попытке удалить связанные с ней записи в другой таблице возникает ошибка
Здравствуйте у меня есть 2 таблицы в БДSalonMassaga. В первой таблице (Clients) поля IDClients, LastName, FirstName, Patronymica. Во второй...

При удалении столбца возникает ошибка "Для обновления требуется действительный DeleteCommand"
приложение отсоединено работает с бд через sqldataAdapter и DataSet. есть две кнопки обновить и сохранить. обновить просто загружает...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru