Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 параметры процедуры в ORDER BY - возможно ли такое?  [new]
koJIo6ok
Member

Откуда: РБ
Сообщений: 950
или предется шесть процедур создавать отличабщихся только полем ORDER BY? или может есть друглй вариант? подскажите плз!
create proc general.usp_zap_post_den_sr
@date_b smalldatetime,
@date_e smalldatetime,
@sort varchar(15)
as
begin
set nocount on;
select nf.nazv_fil_sokr,data,summa,np.nazv_np_sokr,nm.nazv_mes,nazv_ob,os.nazv_subp,prim,op.nazv_plat,nomer,ns.nazv_sch,id_pds
from buh.post_den_sr as pds
left join nw.n_fil as nf
on pds.kod_fil = nf.kod_fil
left join nw.nazn_plat as np
on pds.kod_np = np.kod_np
left join nw.n_mes as nm
on pds.kod_mes = nm.kod_mes
left join pldo.subp_ob as so
on pds.id_subp_ob = so.id_subp_ob
left join general.org_subp as os
on so.id_subp = os.id_subp
left join general.org_plat as op
on pds.id_plat = op.id_plat
left join nw.nazv_schetov as ns
on pds.kod_sch = ns.kod_sch
left join pldo.object as ob
on pds.id_ob = ob.id_ob
where data between @date_b and @date_e
order by @sort;
end;
9 янв 09, 16:01    [6659590]     Ответить | Цитировать Сообщить модератору
 Re: параметры процедуры в ORDER BY - возможно ли такое?  [new]
Glory
Member

Откуда:
Сообщений: 104760
https://www.sql.ru/faq/faq_topic.aspx?fid=112
9 янв 09, 16:02    [6659595]     Ответить | Цитировать Сообщить модератору
 Re: параметры процедуры в ORDER BY - возможно ли такое?  [new]
koJIo6ok
Member

Откуда: РБ
Сообщений: 950
большое спасибо! интересная ссылка, дайте еще что-нибудь! :))
9 янв 09, 17:08    [6659945]     Ответить | Цитировать Сообщить модератору
 Re: параметры процедуры в ORDER BY - возможно ли такое?  [new]
koJIo6ok
Member

Откуда: РБ
Сообщений: 950
create proc general.usp_zap_post_den_sr
@date_b smalldatetime,
@date_e smalldatetime,
@sort tinyint
as
begin
set nocount on;
select nf.nazv_fil_sokr,data,summa,np.nazv_np_sokr,nm.nazv_mes,oz.nazv_zak,nazv_ob,os.nazv_subp,prim,op.nazv_plat,nomer,ns.nazv_sch,id_pds
from buh.post_den_sr as pds
left join nw.n_fil as nf
on pds.kod_fil = nf.kod_fil
left join nw.nazn_plat as np
on pds.kod_np = np.kod_np
left join nw.n_mes as nm
on pds.kod_mes = nm.kod_mes
left join pldo.object as ob
on pds.id_ob = ob.id_ob
left join general.org_zak as oz
on ob.id_zak = oz.id_zak
left join pldo.subp_ob as so
on pds.id_subp_ob = so.id_subp_ob
left join general.org_subp as os
on so.id_subp = os.id_subp
left join general.org_plat as op
on pds.id_plat = op.id_plat
left join nw.nazv_schetov as ns
on pds.kod_sch = ns.kod_sch
where data between @date_b and @date_e
ORDER BY CASE @sort 
WHEN 0 THEN nf.nazv_fil_sokr
WHEN 1 THEN data
WHEN 2 THEN summa
WHEN 3 THEN np.nazv_np_sokr 
WHEN 4 THEN oz.nazv_zak
WHEN 5 THEN nazv_ob
end;
end;
вот такая вышла процедура, но при выполнении
exec general.usp_zap_post_den_sr '01.01.2009' , '10.01.2009' , 0; - ошибка
Msg 295, Level 16, State 3, Procedure usp_zap_post_den_sr, Line 8
Conversion failed when converting character string to smalldatetime data type.
та же ошибка если 3 параметр @sort = 2,3,4,5
при
exec general.usp_zap_post_den_sr '01.01.2009' , '10.01.2009' , 1;
- все нормально отрабатывает помогите разобраться пожалуйста!

зы Microsoft SQL Server 2005 - 9.00.3239.00 (Intel X86)
Apr 9 2008 22:56:02
Copyright (c) 1988-2005 Microsoft Corporation
Enterprise Edition on Windows NT 5.2 (Build 3790: Service Pack 2) - сп3 можно ставить уже?
10 янв 09, 12:07    [6662338]     Ответить | Цитировать Сообщить модератору
 Re: параметры процедуры в ORDER BY - возможно ли такое?  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3264
Ошибку не можете перевести ? там же ясно написано, ошибка пенобразования даты из строкового представления. передавайте правильно дату 'yyyymmdd' или язык учётки правильно поставте.
10 янв 09, 12:10    [6662343]     Ответить | Цитировать Сообщить модератору
 Re: параметры процедуры в ORDER BY - возможно ли такое?  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
1) Приоритет типов
2) Дата-время строковой константой
10 янв 09, 12:11    [6662348]     Ответить | Цитировать Сообщить модератору
 Re: параметры процедуры в ORDER BY - возможно ли такое?  [new]
koJIo6ok
Member

Откуда: РБ
Сообщений: 950
Ken@t
Ошибку не можете перевести ? там же ясно написано, ошибка пенобразования даты из строкового представления. передавайте правильно дату 'yyyymmdd' или язык учётки правильно поставте.

ошибка вроде понятно, но не понятно почему при @sort = 1 (или 6,7,8,...)- работает а при 0,2,3,4,5
нет - ну как так?
10 янв 09, 12:14    [6662353]     Ответить | Цитировать Сообщить модератору
 Re: параметры процедуры в ORDER BY - возможно ли такое?  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
CASE (Transact-SQL)
Читать "Типы результата"
10 янв 09, 12:18    [6662361]     Ответить | Цитировать Сообщить модератору
 Re: параметры процедуры в ORDER BY - возможно ли такое?  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
Кстати, об этом упоминалось и в FAQ, ссылка на который была дана Вам Glory еще вчера:
"The CASE construction evaluates to value of a specific data type..." и т.д.
10 янв 09, 12:22    [6662382]     Ответить | Цитировать Сообщить модератору
 Re: параметры процедуры в ORDER BY - возможно ли такое?  [new]
koJIo6ok
Member

Откуда: РБ
Сообщений: 950
Паганель
CASE (Transact-SQL)
Читать "Типы результата"


Возвращает выражение с наивысшим приоритетом из набора выражений result_expressions и необязательного выражения else_result_expression.
ORDER BY CASE @sort 
WHEN 0 THEN nf.nazv_fil_sokr
WHEN 1 THEN data
WHEN 2 THEN summa
WHEN 3 THEN np.nazv_np_sokr 
WHEN 4 THEN oz.nazv_zak
WHEN 5 THEN nazv_ob
end;
получается неважно что я передам параметру @sort, case все равно вернет 1-data (точнее получится ошибка) тк приоритет типа данных smalldatetime выше чем 0,2,3,4,5 - varchar.
жаль выходит 6 процедурок делать надо, или думать :))
10 янв 09, 12:37    [6662434]     Ответить | Цитировать Сообщить модератору
 Re: параметры процедуры в ORDER BY - возможно ли такое?  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
Еще раз
https://www.sql.ru/faq/faq_topic.aspx?fid=112
Вы Option V видели?
Почему не взяли на вооружение?
10 янв 09, 12:40    [6662445]     Ответить | Цитировать Сообщить модератору
 Re: параметры процедуры в ORDER BY - возможно ли такое?  [new]
koJIo6ok
Member

Откуда: РБ
Сообщений: 950
взял !!!!
ORDER BY 
CASE @sort WHEN 0 THEN nazv_fil_sokr ELSE NULL END, 
CASE @sort WHEN 1 THEN data ELSE NULL END, 
CASE @sort WHEN 2 THEN summa ELSE NULL END, 
CASE @sort WHEN 3 THEN nazv_np_sokr ELSE NULL END, 
CASE @sort WHEN 4 THEN nazv_zak ELSE NULL END,
CASE @sort WHEN 5 THEN nazv_ob ELSE NULL END
ай заработало, большое спасибо !!! но я еще вернусь...
10 янв 09, 13:05    [6662504]     Ответить | Цитировать Сообщить модератору
 Re: параметры процедуры в ORDER BY - возможно ли такое?  [new]
koJIo6ok
Member

Откуда: РБ
Сообщений: 950
подскажите плз как добавить на поле data desc?
если дописываю data desc то ошибка сразу
CASE @sort WHEN 0 THEN nazv_fil_sokr ELSE NULL END, 
CASE @sort WHEN 1 THEN data ELSE NULL END, 
CASE @sort WHEN 2 THEN summa ELSE NULL END, 
CASE @sort WHEN 3 THEN nazv_np_sokr ELSE NULL END, 
CASE @sort WHEN 4 THEN nz.nazv_org ELSE NULL END,
CASE @sort WHEN 5 THEN nazv_ob ELSE NULL END,
CASE @sort WHEN 6 THEN ns.nazv_org ELSE NULL END
10 дек 09, 15:12    [8047263]     Ответить | Цитировать Сообщить модератору
 Re: параметры процедуры в ORDER BY - возможно ли такое?  [new]
Glory
Member

Откуда:
Сообщений: 104760
DESC должно идти после END, а не перед
10 дек 09, 15:13    [8047268]     Ответить | Цитировать Сообщить модератору
 Re: параметры процедуры в ORDER BY - возможно ли такое?  [new]
koJIo6ok
Member

Откуда: РБ
Сообщений: 950
Glory,
спасибо вам, уже наверное сотый раз
10 дек 09, 15:30    [8047415]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить