powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Странная работа хранимой процедуры.
10 сообщений из 10, страница 1 из 1
Странная работа хранимой процедуры.
    #36778554
Фотография Esofter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть хранимая процедура, которая возвращает некий набор данных.
Приложение вызывает ее так:
Код: plaintext
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.
32.
33.
34.
35.
36.
37.
 private List<StreetInfo> SearchStreet(string mask)
        {
            List<StreetInfo> lst = new List<StreetInfo>();
            SqlCommand cmd = new SqlCommand("up_SearchByMask", DataConnection);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlParameter par = new SqlParameter("@op", 0);
            cmd.Parameters.Add(par);
            par = new SqlParameter("@SearchMask", txtFastAdressFrom.Text);
            cmd.Parameters.Add(par);
            par = new SqlParameter("@SearchType", 0);
            cmd.Parameters.Add(par);
            par = new SqlParameter("@TownID", 1);
            cmd.Parameters.Add(par);
            try
            {
                DataConnection.Open();
                SqlDataReader reader = cmd.ExecuteReader();
                while (reader.Read())
                {
                    StreetInfo si = new StreetInfo();
                    si.ID = reader["StreetID"].ToString();
                    si.Name = reader["StreetName"].ToString();
                    lst.Add(si);
                }
                return lst;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                return null;
            }
            finally
            {
                DataConnection.Close();
            }

        }

Если параметр mask=Б, она должна вернуть одну запись, проверял через менеджмент студио, подставляя параметры, отрабатывает правильно.
А вот когда из приложения вызываю, почему-то возвращаются все записи.
Почему так если параметры заданы аналогично?
...
Рейтинг: 0 / 0
Странная работа хранимой процедуры.
    #36778582
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имя параметра не попутал?

Давай код хранимки. Телепаты на отдыхе.
...
Рейтинг: 0 / 0
Странная работа хранимой процедуры.
    #36778820
House M.D.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buredИмя параметра не попутал?

Давай код хранимки. Телепаты на отдыхе.

Код: plaintext
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.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
USE [Taxon]
GO
/****** Object:  StoredProcedure [dbo].[up_SearchByMask]    Script Date: 08/06/2010 09:47:05 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:			<...>
-- Create date:	<2010-08-04>
-- Description:	<Поиск по маске>
-- =============================================
ALTER PROCEDURE [dbo].[up_SearchByMask]
								@Op int = 0,
								@SearchMask varchar(400) = NULL,
								@SearchType int = 0,
								@TownID int = 0,
								@StreetID int = 0
AS
BEGIN
	declare @SearchMaskLocal varchar(400)
	
	select @SearchMaskLocal = case
					when @SearchType = 0 then @SearchMask + '%'
					when @SearchType = 1 then '%' + @SearchMask
					else '%' + @SearchMask + '%'
				end

	--Street search
	if(@Op = 0)
	begin
		select	sd.StreetID, sd.StreetName
		from		StreetDict sd
		where	sd.StreetName like @SearchMaskLocal
					and sd.TownID = @TownID
	end
	
	--Building search
	if(@Op = 1)
	begin	
		select	bd.BuildingID, bd.BuildingNo
		from		BuildingDict bd
		where	bd.BuildingNo like @SearchMaskLocal
					and bd.StreetID = @StreetID
	end
	
	--Poi search
	if(@Op = 2)
	begin	
		select	sd.StreetID, sd.StreetName, bd.BuildingID, bd.BuildingNo
		from		PoiDict pd
		join		BuildingDict bd on pd.BuildingID = bd.BuildingID
		join		StreetDict sd on sd.StreetID = bd.StreetID
		where	pd.PoiName like @SearchMaskLocal
	end	
END
...
Рейтинг: 0 / 0
Странная работа хранимой процедуры.
    #36778834
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EsofterА вот когда из приложения вызываю, почему-то возвращаются все записи.
Почему так если параметры заданы аналогично?
Посмотрите профайлером, что передаётся в процедуру.
...
Рейтинг: 0 / 0
Странная работа хранимой процедуры.
    #36778878
House M.D.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может я не тогда когда надо вызываю ее.
На форме комбобокс, по изминению текста, нужно подгрузить данные.

Код: plaintext
1.
2.
3.
4.
5.
6.
 private void txtAdressFrom_TextChanged(object sender, EventArgs e)
        {
            txtAdressFrom.DataSource = SearchStreet(txtAdressFrom.Text);//тут вызывается ХП
            txtAdressFrom.ValueMember = "ID";
            txtAdressFrom.DisplayMember = "Name";
        }
...
Рейтинг: 0 / 0
Странная работа хранимой процедуры.
    #36778887
House M.D.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин, нашел ошибку. В коде

Код: plaintext
1.
 par = new SqlParameter("@SearchMask", txtFastAdressFrom.Text);

тут не то передавалось, надо было переменную mask.
...
Рейтинг: 0 / 0
Странная работа хранимой процедуры.
    #36778904
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
House M.D.Блин, нашел ошибку. В коде

Код: plaintext
1.
 par = new SqlParameter("@SearchMask", txtFastAdressFrom.Text);

тут не то передавалось, надо было переменную mask.
...
Рейтинг: 0 / 0
Странная работа хранимой процедуры.
    #36779646
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bured Имя параметра не попутал?

Давай код хранимки. Телепаты на отдыхе.
таки я телепат
...
Рейтинг: 0 / 0
Странная работа хранимой процедуры.
    #36779743
House M.D.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buredbured Имя параметра не попутал?

Давай код хранимки. Телепаты на отдыхе.
таки я телепат

та не имя я спутал, не то значения подставлял в параметр.
...
Рейтинг: 0 / 0
Странная работа хранимой процедуры.
    #36780062
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну тогда недотелепат
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Странная работа хранимой процедуры.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]