| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > MS SQL Server > Ошибка при выполнении хранимой процедуры |
| Автор: thomas 20.12.2007, 18:06 | ||||
| Приветствую всех. Написал хранимую процедуру для вставки строки с данными на товар. Время записи должно подставляться автоматически на стороне сервера.
При проверке синтаксиса managemant studio не ругается, но если попробовать выполнить эту ХП, то получаю вот эту ошибку.
Знаю, что слон где-то рядом, но не вижу его! Подскажите в чем может быть проблема, где собственно грабли, что я сделал не так? Или пните в нужном направлении. Заранее благодарю. Добавлено @ 18:11 ЗЫ и извините я с англицким не очень дружу, потому не соображу как понять это сообщение. А язык который я понимаю студия не использует. |
| Автор: thomas 20.12.2007, 18:47 | ||||
skyboy,
Так я ее родимую в самой студии и пытаюсь выполнить. Жму правой кнопкой мыша на имя ХП и выбираю "Выполнить хранимую процедуру ..." Появляется окошко для ввода параметров,ввожу параметры, кроме последнего artikelId, так как ХП должна присвоить значение ему и вернуть. Поле с автонумерацией. Жму ОК и получаю сообщение об ошибке и вот это вместо ХП
До кода в приложении еще далеко. Добавлено через 4 минуты и 34 секунды Слушай, а может засада в том что полей в таблице 10, а задается 9-ть параметров перед AS. И последний modifiedDate задается в DECLARE |
| Автор: skyboy 20.12.2007, 18:53 |
| видимо, потому что воспринимается не как один параметр со значением "3.62", а два параметра: huidigePrijs со значением "3" и неименованный параметр "62". впрочем, могу ошибаться. |
| Автор: thomas 20.12.2007, 19:08 | ||||
skyboy,
Действительно, а слона то я и не заметил. Спасибо. Но там еще был один нюанс. Нельзя писать в INSERT INTO имя поля ArtikelId и в VALUES имя параметра @artikelId. Id строке приваивается в результате выполнения ХП и его же она возвращает. Вот код работающей ХП
Можем двигаться дальше |
| Автор: skyboy 20.12.2007, 20:13 | ||
в смысле - поле было типа idenity? так если не стоит "not for replication", то должно, как мне кажется, поддерживать "ручную" вставку значения. прошу сообщить, если я ошибаюсь. |
| Автор: thomas 21.12.2007, 00:26 | ||
| skyboy, Там в цитате ошибочка, я когда писал пост описался: вместо выполняет ==> возвращает. Поле ArtikelId является РК и в свойствах выставлено "Является идентифицирующим столбцом" - ДА "Не для репликации" установлено НЕТ. Попробовал в студии в открытую таблицу вставить новую строку и при этом указать ArtikelId в ручную. Не получилось. В пустой строке все ячейки NULL, встал на первую жму клавишу цифры и нифига. В остальные поля данные заносятся на ура. Перешёл на следующую строку, та которая была заполнена получила ArtikelId на номер больший предыдущего (1,2,3,5) Не знаю это ли ты подразумевал под
|
| Автор: skyboy 21.12.2007, 00:35 | ||||
| thomas, да, это. я считал, что если not for replication: false, то как раз можно вставлять значения вручную. но ошибся, надо было сразу в ман заглянуть.
т.е. при not for replication: true значение последнего вставленного identity не увеличивается при вставке новой записи в процессе репликации. Добавлено через 7 минут и 15 секунд черт, ведь крутилось в голове ведь... чтоб можно было "вручную вставлять" значения в identity-поле необходимо "вручную заявить" про это желание при помощи http://technet.microsoft.com/en-us/library/ms188059.aspx типа
до insert'a и "выключения"(то же самое, но вместо "ON" - "OFF") вставки после insert'a |