Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Lexey7 Member Откуда: Сообщений: 13 |
Если убираю это условие, то данные в таблицу заносятся, так что проблема в нем. WHERE Sellers.ФИО_сотрудника = @ФИО_сотрудника and Shoppers.ФИО_покупателя = @ФИО_покупателя and Goods.Модель = @Модель @ФИО_сотрудника @ФИО_покупателя @Модель — параметры, передаваемые из программы хранимой процедуре. |
2 июн 17, 10:49 [20533816] Ответить | Цитировать Сообщить модератору |
TaPaK Member Откуда: Kiev Сообщений: 6801 |
Lexey7, Ответ: 42 ну и да, дело в условиях :) |
2 июн 17, 10:54 [20533834] Ответить | Цитировать Сообщить модератору |
Lexey7 Member Откуда: Сообщений: 13 |
Это такой сарказм? Вот код, который обращается к процедуре using (var sqlConn = new SqlConnection(@"Server=.\sqlexpress;Initial Catalog=Computers;Integrated Security=True")) { var sqlCmd = new SqlCommand("InsertSells", sqlConn); sqlCmd.CommandType = CommandType.StoredProcedure; sqlCmd.Parameters.AddWithValue("@ФИО_сотрудника", comboBox2.SelectedIndex.ToString()); sqlCmd.Parameters.AddWithValue("@Модель", comboBox1.SelectedIndex.ToString()); sqlCmd.Parameters.AddWithValue("@ФИО_покупателя", comboBox3.SelectedIndex.ToString()); sqlCmd.Parameters.AddWithValue("@Количество", Convert.ToInt32(textBox1.Text)); sqlCmd.Parameters.AddWithValue("@Дата", DateTime.Now); sqlConn.Open(); sqlCmd.ExecuteNonQuery(); } Вот сама процедура USE Computers; GO CREATE PROCEDURE InsertSells2 @ФИО_сотрудника nvarchar(50), @Модель nvarchar(50), @ФИО_покупателя nvarchar(50), @Количество int, @Дата datetime AS BEGIN INSERT INTO Sells (Код_продавца, Код_комплектующего, Код_покупателя, [Дата покупки], Цена, Количество, Стоимость) SELECT Sellers.Код_сотрудника, Goods.Код_комплектующего, Shoppers.Код_покупателя, @Дата, Goods.Цена, @Количество, @Количество * Goods.Цена FROM Sellers, Goods, Shoppers WHERE Sellers.ФИО_сотрудника = @ФИО_сотрудника and Shoppers.ФИО_покупателя like @ФИО_покупателя and Goods.Модель like @Модель END |
||
2 июн 17, 11:03 [20533865] Ответить | Цитировать Сообщить модератору |
TaPaK Member Откуда: Kiev Сообщений: 6801 |
Lexey7,
нет, это ответ на «Главный вопрос жизни, вселенной и всего такого» В данном случае подходит |
||
2 июн 17, 11:05 [20533877] Ответить | Цитировать Сообщить модератору |
Lexey7 Member Откуда: Сообщений: 13 |
Так непонятно в чем проблема? |
||||
2 июн 17, 11:13 [20533917] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47052 |
Lexey7, как выглядит этот INSERT на сервере? Профайлером смотрели? Сюда скпипастить можете? Просто интересно: почему фамилия сотрудника сравнивается оператором =, а фамилия покупателя - оператором LIKE? Может ли быть так, что часть параметров внутри процедуры равна NULL? |
2 июн 17, 11:14 [20533926] Ответить | Цитировать Сообщить модератору |
Lexey7 Member Откуда: Сообщений: 13 |
Нет, просто забыл убрать этот like, через обычное сравнение не работает тоже.
Это? SQL:BatchStarting SELECT Код_покупки, [Дата покупки], ФИО_сотрудника, ФИО_покупателя, Цена, Количество, Стоимость FROM dbo.VS .Net SqlClient Data Provider Alexey DESKTOP-4A2752J\Alexey 1352 59 2017-06-02 11:39:38.047 SQL:BatchCompleted SELECT Код_покупки, [Дата покупки], ФИО_сотрудника, ФИО_покупателя, Цена, Количество, Стоимость FROM dbo.VS .Net SqlClient Data Provider Alexey DESKTOP-4A2752J\Alexey 0 39 0 9 1352 59 2017-06-02 11:39:38.047 2017-06-02 11:39:38.057 |
||||
2 июн 17, 11:40 [20534027] Ответить | Цитировать Сообщить модератору |
Lexey7 Member Откуда: Сообщений: 13 |
Всё, нашёл свою ошибку. |
2 июн 17, 11:48 [20534075] Ответить | Цитировать Сообщить модератору |
ПаWWWлОдАрЕц Member Откуда: NSK-PVL Сообщений: 135 |
С позволения уважаемого TaPak покажу ТСу ответ на его вопрос -> 42 |
||||
2 июн 17, 12:04 [20534155] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47052 |
только с конкретными значениями параметров. Перед запуском профайлера надо его настроить, чтобы показывал пошаговое выполнение текста процедуры. И какая же была ошибка? |
||
2 июн 17, 12:13 [20534206] Ответить | Цитировать Сообщить модератору |
alexeyvg Member Откуда: Moscow Сообщений: 31783 |
Что за кросс-джойн между тремя таблицами???
|
||||||
3 июн 17, 00:21 [20536416] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47052 |
оставляющее одну запись, то ведь ничего страшного? |
||
3 июн 17, 11:42 [20536722] Ответить | Цитировать Сообщить модератору |
alexeyvg Member Откуда: Moscow Сообщений: 31783 |
Смотрите: в интерфейсе показывается справочник, в нём мы выбираем из списка сотрудников, покупателей, модели. Выбираем почему то не их ИД, а названия (кстати, а есть уникальный констрейн на эти поля?). Потом вызываем процедуру, в которой по именам выковыриваем ИД и вставляем в таблицу. Сколько там записей выберется, уникальны ли значения, непонятно. Как там передаются названия, неизвестно. В общем, такой код может правильно отработать, но точно это сказать нельзя. |
||||
3 июн 17, 13:16 [20536799] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |