|
Хранимая процедура возвращает пусто...
|
|||
---|---|---|---|
#18+
Что-то не пойму почему хранимая процедура возвращает пусто... Есть такая процедурка/// ФИО гражданина /// <table> /// <tr> /// <td><b>Urn</b></td> /// <td>Urn гражданина</td> /// </tr> /// <tr> /// <td><b>Date</b></td> /// <td>На какую дату</td> /// </tr> /// <tr> /// <td><b>Type</b></td> /// <td>0-Ф|И|О, 1-фамилия, 2-имя, 3-отчество, 4-фамилия и инициалы, 5-инициалы и фамилия</td> /// </tr> /// </table> ClassMethod name(Urn As %String, Date As %Date, Type As %Integer) As %String [ SqlProc ] { s:$g(Date)="" Date=+$h s Type=$g(Type) s sql="Select * " s sql=sql_" From soi_arh_data_cls.name as a" s sql=sql_" Where a.parent in (" s sql=sql_" Select b.urn" s sql=sql_" From soi_arh_data.name as b" s sql=sql_" Where b.citizen=?" s sql=sql_" )" s sql=sql_" And a.Dat<=?" s sql=sql_" Order by Dat desc" s o=##class(%ResultSet.SQL).%Prepare(sql,.err,"",Urn,Date) s ^tmp(Urn)=o s name="" s dlm="|" if o.%Next() { s ^tmp(Urn,1)=o.%Get("surname") s $p(name,dlm)=o.%Get("surname") s $p(name,dlm,2)=o.%Get("name") s $p(name,dlm,3)=o.%Get("patronymic") } k o q:Type=0 name q:Type>3 $$nameShort(Type-3) q:Type $p(name,dlm,Type) q $tr(name,dlm," ") nameShort(Type) // Фимилия + инициалы s str=$p(name,dlm) s str1="" s val=$p(name,dlm,2) s:val'="" str1=$e(val)_"." s val=$p(name,dlm,3) s:val'="" str1=str1_$e(val)_"." i Type=1 s:str1'="" str=str_" "_str1 i Type=2 s:str1'="" str=str1_" "_str q str } Нормально работает с командной строки Код: vbnet 1. 2.
А в запросе возвращает пустоту (см.картинку)Select soi_arh_data.citizen_name(urn) as fio, * From soi_arh_data.citizen ---------- Cache for Windows (x86-64) 2010.2.3 (Build 702) Tue Feb 15 2011 14:20:27 EST Cache for Windows (x86-64) 2012.1.1 (Build 602) Wed Mar 7 2012 22:36:34 EST ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2013, 09:18 |
|
Хранимая процедура возвращает пусто...
|
|||
---|---|---|---|
#18+
Делал тестовую запись в глобал ^tmp - запрос выполняется Код: vbnet 1.
Но в if o.%Next() { s ^tmp(Urn,1)=o.%Get("surname") s $p(name,dlm)=o.%Get("surname") s $p(name,dlm,2)=o.%Get("name") s $p(name,dlm,3)=o.%Get("patronymic") } уже не попадает... Почему тогда с командной строки все работает как надо? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2013, 09:21 |
|
Хранимая процедура возвращает пусто...
|
|||
---|---|---|---|
#18+
Потестил сейчас из портала - работает! Значит дело все в связке Cache+Delphi... Это там процедурка возвращает пусто... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2013, 09:31 |
|
Хранимая процедура возвращает пусто...
|
|||
---|---|---|---|
#18+
Возможно, режим даты стоит не такой. Исключите дату из запроса и проверьте. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2013, 09:44 |
|
Хранимая процедура возвращает пусто...
|
|||
---|---|---|---|
#18+
Блок А.Н.Возможно, режим даты стоит не такой. Исключите дату из запроса и проверьте. О, спасибо. В запросе используется хоролог... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2013, 10:04 |
|
Хранимая процедура возвращает пусто...
|
|||
---|---|---|---|
#18+
Блок А.Н. , да, это дата. А как сделать универсальный вариант по дате? Дабы работала в связке Cache+Delphi и просто Cache? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2013, 10:11 |
|
Хранимая процедура возвращает пусто...
|
|||
---|---|---|---|
#18+
Параметр чёле вводить... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2013, 10:12 |
|
Хранимая процедура возвращает пусто...
|
|||
---|---|---|---|
#18+
Он как-то переключается через какие-то ZU. Попробуйте еще d $system.SQL.SetSelectMode(...) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2013, 10:33 |
|
Хранимая процедура возвращает пусто...
|
|||
---|---|---|---|
#18+
Блок А.Н.Он как-то переключается через какие-то ZU. Попробуйте еще d $system.SQL.SetSelectMode(...) А что из этого дока0 LOGICAL 1 ODBC 2 DISPLAY Нужно для использования хоролога? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2013, 10:42 |
|
Хранимая процедура возвращает пусто...
|
|||
---|---|---|---|
#18+
Logical В портале же есть селектор ;-) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2013, 10:44 |
|
Хранимая процедура возвращает пусто...
|
|||
---|---|---|---|
#18+
krvsa, то же наступал на эти грабли с датами, пришел к такому решению: все что на клиенте, неважно каком, перевожу в хоролог а запрос формирую так: "... where TONUMBER(date)=:dateParam" ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2013, 11:50 |
|
Хранимая процедура возвращает пусто...
|
|||
---|---|---|---|
#18+
Блок А.Н.Logical Ясно. Блок А.Н.В портале же есть селектор ;-) Дык я там и не бываю... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2013, 11:56 |
|
Хранимая процедура возвращает пусто...
|
|||
---|---|---|---|
#18+
krvsa , Всё дело в контексте вызова. Если запустите метод из терминала, то $system.SQL.GetSelectMode() = 0 Если как ХП, то $system.SQL.GetSelectMode() = 1 Select Mode Поскольку используете класс %ResultSet.SQL , в котором свойство %RuntimeMode приватное, то остаётся вариант предложенный Блок А.Н. . PS: ещё проверьте формат получаемого параметра Date : возможно, в одном случае он приходит в виде 62900, а в другом - "2013-03-19". ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2013, 11:57 |
|
Хранимая процедура возвращает пусто...
|
|||
---|---|---|---|
#18+
Ymka2007пришел к такому решению: все что на клиенте, неважно каком, перевожу в хоролог а запрос формирую так: "... where TONUMBER(date)=:dateParam" Так у меня хранимая процедура будет выполняться не только на клиенте но и в "Каше"... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2013, 11:58 |
|
Хранимая процедура возвращает пусто...
|
|||
---|---|---|---|
#18+
Ymka2007все что на клиенте, неважно каком, перевожу в хоролог а запрос формирую так: "... where TONUMBER(date)=:dateParam"Плохое решение. Если есть индекс на дату, то он в таком случае не будет задействован. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2013, 12:00 |
|
Хранимая процедура возвращает пусто...
|
|||
---|---|---|---|
#18+
servitещё проверьте формат получаемого параметра Date : возможно, в одном случае он приходит в виде 62900, а в другом - "2013-03-19". В моём примере дата не передаётся вообще... Она там явно присваивается Код: vbnet 1.
От того и непонятки... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2013, 12:02 |
|
Хранимая процедура возвращает пусто...
|
|||
---|---|---|---|
#18+
servitЕсли запустите метод из терминала, то Код: vbnet 1.
А я думал нужно как параметр передавать Код: vbnet 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2013, 12:04 |
|
Хранимая процедура возвращает пусто...
|
|||
---|---|---|---|
#18+
krvsa , Для чего это: Date As %Date, Type As %Integer? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2013, 12:05 |
|
Хранимая процедура возвращает пусто...
|
|||
---|---|---|---|
#18+
krvsaА я думал нужно как параметр передавать http://docs.intersystems.com/cache20122/csp/documatic/%25CSP.Documatic.cls?PAGE=CLASS&LIBRARY=%25SYS&CLASSNAME=%25SYSTEM.SQL#GetSelectMode] Get SelectMode http://docs.intersystems.com/cache20122/csp/documatic/%25CSP.Documatic.cls?PAGE=CLASS&LIBRARY=%25SYS&CLASSNAME=%25SYSTEM.SQL#SetSelectMode] Set SelectMode ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2013, 12:08 |
|
Хранимая процедура возвращает пусто...
|
|||
---|---|---|---|
#18+
servitДля чего это: Date As %Date, Type As %Integer? Где? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2013, 12:10 |
|
Хранимая процедура возвращает пусто...
|
|||
---|---|---|---|
#18+
servitДля чего это: Date As %Date, Type As %Integer? А! Понял... Это на тот случай если дату таки передадут. Но впримерах выше я специально её не передаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2013, 12:11 |
|
Хранимая процедура возвращает пусто...
|
|||
---|---|---|---|
#18+
Вот так работает! Код: vbnet 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.
Код: vbnet 1.
Помогло. Осталось проверить как передаётся дата и переделать её в хоролог, если нужно. Спасибо всем за помощь!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2013, 12:14 |
|
Хранимая процедура возвращает пусто...
|
|||
---|---|---|---|
#18+
servitпроверьте формат получаемого параметра Date : возможно, в одном случае он приходит в виде 62900, а в другом - "2013-03-19". Только два варианта возможны? Или их больше? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2013, 12:53 |
|
Хранимая процедура возвращает пусто...
|
|||
---|---|---|---|
#18+
krvsaТолько два варианта возможны? Или их больше?Больше. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2013, 12:57 |
|
|
start [/forum/moderation_log.php?user_name=lavr0v]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
153ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
62ms |
get tp. blocked users: |
2ms |
others: | 692ms |
total: | 979ms |
0 / 0 |