Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
запрос типа SQL к обьектам
|
|||
|---|---|---|---|
|
#18+
Здравствуйте уважаемые господа знатоки Cache! Не могу не обратится к вам снова, как говорится более не к кому. Заранее прошу прощения... Хочется узнать есть ли в славной системе Cache такой инструмент(процедура метод или системная команда) который бы позволял бы произвести выборку данных из объектов по параметрическому запросу как в SQL select "нужные поля" from "таблицы" where "условия по которым произвожу отбор" принцип тот же но средствами Классов и объектов ..... Насколько я разобрался после того как получим доступ к объекту Set var=##class(NameSpase.Class1).%OpenId(Номер OID) Выходит если номер OID не знаешь то и не получишь объекта !? В SQL прописал в условиях Where name="Петя" и все селект отберет все записи в которых в поле name= петя и все! А В ОБЪЕКТАХ выполнить подобный запрос по параметрам ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 13:56 |
|
||
|
запрос типа SQL к обьектам
|
|||
|---|---|---|---|
|
#18+
alex171069, варианты: 1. построить индексы по искомым полям, потом бежать по ним $O() и получать нужный ID 2. можно бежать по существующим ID а) через %OpenId(ID) проверять на "ИСКОМОЕ ПОЛЕ" "УСЛОВИЕ" "ИСКОМОЕ ЗНАЧЕНИЕ" б) определить в какой позиции будет записываться "ИСКОМОЕ ПОЛЕ" просмотрев стратегию хранения (или как то програмно определить эту позицию) и через $LG($g(^моя_ГлобальD(ID)),N_искомого_поля) "УСЛОВИЕ" "ИСКОМОЕ ЗНАЧЕНИЕ" индексы самый оптимальный вариант ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 14:33 |
|
||
|
запрос типа SQL к обьектам
|
|||
|---|---|---|---|
|
#18+
Глобалы явно не выход. А чем не нравится sql? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 15:37 |
|
||
|
запрос типа SQL к обьектам
|
|||
|---|---|---|---|
|
#18+
alex171069, Есть еще один вариант получения ссылки OREF на экземпляр по значению уникального индекса. Пусть в классе TestClass есть следующее: Код: c# 1. 2. 3. 4. Для уникальных индексов Cache создает скрытый метод класса для доступа к экземпляру по значению индекса. И можно обратиться к экземпляру класса так: Код: c# 1. А в остальном согласен с Блоком А.В.: грех не пользоваться оптимизатором SQL. Для узких мест, когда SQL-оптимизатор не справляется, берите в умелые руки $Order и $Query - и обрящете. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2012, 18:21 |
|
||
|
запрос типа SQL к обьектам
|
|||
|---|---|---|---|
|
#18+
alex171069, %ObjectSelectMode Property Пример: #include %occStatus set oldNS=$znspace set myquery="SELECT TOP 5 %ID,Name,Age FROM Sample.Person" znspace "SAMPLES" set st = ##class(%SQL.Statement).%New() set st.%ObjectSelectMode=1 set qSC = st.%Prepare(myquery) if $$$ISOK(qSC) { set rs = st.%Execute() while rs.%Next() { write "Name=",rs.Name,?30, "Age=",rs.Age,?38, "Home State:",rs.ID.Home.State,! } write !,"End of data" write !,"Total row count=",rs.%ROWCOUNT }else{ write "%Prepare failed",!,$System.Status.GetErrorText(qSC,"ru") } znspace oldNS ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2012, 11:12 |
|
||
|
|

start [/forum/topic.php?fid=39&msg=37704325&tid=1557512]: |
0ms |
get settings: |
7ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
38ms |
get topic data: |
16ms |
get forum data: |
3ms |
get page messages: |
65ms |
get tp. blocked users: |
2ms |
| others: | 257ms |
| total: | 412ms |

| 0 / 0 |
