Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Странная работа хранимой процедуры. / 10 сообщений из 10, страница 1 из 1
06.08.2010, 02:12
    #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
06.08.2010, 05:12
    #36778582
bured
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странная работа хранимой процедуры.
Имя параметра не попутал?

Давай код хранимки. Телепаты на отдыхе.
...
Рейтинг: 0 / 0
06.08.2010, 10:48
    #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
06.08.2010, 10:53
    #36778834
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странная работа хранимой процедуры.
EsofterА вот когда из приложения вызываю, почему-то возвращаются все записи.
Почему так если параметры заданы аналогично?
Посмотрите профайлером, что передаётся в процедуру.
...
Рейтинг: 0 / 0
06.08.2010, 11:10
    #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
06.08.2010, 11:13
    #36778887
House M.D.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странная работа хранимой процедуры.
Блин, нашел ошибку. В коде

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

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

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

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

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

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

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


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