Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
CREATE PROCEDURE
|
|||
|---|---|---|---|
|
#18+
Возможно ли создание подобной процедуры в каше и как мог бы выглядеть возврат значений ? CREATE PROCEDURE GETPARENTS (ID INTEGER) RETURNS (DID INTEGER,OID INTEGER,NAME VARCHAR(60),CCOUNT INTEGER) AS BEGIN WHILE (:ID > 0) DO BEGIN SELECT O.ID, O.PARENT, O.NAME, O.CCOUNT FROM DETAIL O WHERE O.ID = :ID INTO :DID, :OID, :NAME , :CCOUNT; ID = :OID; SUSPEND; END END ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2006, 15:38 |
|
||
|
CREATE PROCEDURE
|
|||
|---|---|---|---|
|
#18+
Да нет проблем. Студия, добавить запрос с опцией переопределить методы запроса. Переписываем три метода. Детали в документации. http://127.0.0.1:1972/csp/docbook/DocBook.UI.Page.cls?KEY=GOBJ_queries Тема - User-Written Class Queries ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2006, 15:50 |
|
||
|
CREATE PROCEDURE
|
|||
|---|---|---|---|
|
#18+
Так можно на любой вопрос ответить. Мне нужен такой вариант, который можно было бы использовать чез ОДБС например так Select * from GETPARENTS(:ID) или так CALL GETPARENTS(:ID) ни один из вариантов для Query мне запустить не удалось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2006, 16:36 |
|
||
|
CREATE PROCEDURE
|
|||
|---|---|---|---|
|
#18+
Мне тоже нужен такой вариант :-) и очень давно, но увы, полного соответствия между моделью Интербейз и Каше нет. Я дал ближайшее соответствие. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2006, 16:55 |
|
||
|
CREATE PROCEDURE
|
|||
|---|---|---|---|
|
#18+
Мне кажется должен быть какой то выход. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2006, 17:07 |
|
||
|
CREATE PROCEDURE
|
|||
|---|---|---|---|
|
#18+
Class User.Wisdom Extends %Persistent [ ClassType = persistent, SqlTableName = WISDOM, TimeChanged = "60296,29970.979684" ] { ClassMethod NewQuery1Close(ByRef qHandle As %Binary) As %Status [ PlaceAfter = NewQuery1Execute ] { s qHandle="", ID = "" Quit $$$OK } ClassMethod NewQuery1Execute(ByRef qHandle As %Binary, RoutineName As %CacheString, P0 As %CacheString, P1 As %CacheString, P2 As %CacheString,P3 As %CacheString) As %Status { set ID = RoutineName,Temp = 0 // d @RoutineName s qHandle=$lb("",$g(P0,"p0 undef"),$g(P1,"p1 undef"),$g(P2,"p2 undef"),$g(P3,"p3 undef")) ; Quit $$$OK } ClassMethod NewQuery1Fetch(ByRef qHandle As %Binary, ByRef Row As %List, ByRef AtEnd As %Integer = 0) As %Status [ PlaceAfter = NewQuery1Execute ] { new DID, OID, NAME , CCOUNT if (qHandle'=$lb("")) { s AtEnd=0 &sql(SELECT O.ID, O.PARENT, O.NAME, O.CCOUNT INTO :DID, :OID, :NAME , :CCOUNT FROM DETAIL O WHERE O.ID = :ID ) set ID = OID s Row=$lb(DID,OID,NAME,CCOUNT) if (ID < 1){ s qHandle=$lb("") } } else { s AtEnd=1, Row="" } Quit $$$OK } Query NewQuery1(RoutineName As %CacheString ) As %Query(ROWSPEC = "DID:%CacheString,OID:%CacheString,NAME:%CacheString,CCOUNT:%CacheString") [ SqlName = VisMQuery, SqlProc ] { } Query1->SQL->Text = "CALL VisMQuery(123)"; Query1->Open(); На борланде выводит в решотку как положенно, через SQL Manager почему то не работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2006, 17:22 |
|
||
|
CREATE PROCEDURE
|
|||
|---|---|---|---|
|
#18+
SQL-менеджер (Кстати, пора уже переходить на Cache' 5.1. и, соответственно, на Портал Управления Cache') работает на через ODBC, а через Dynamic SQL. В SQL-менеджере нельзя запускать хранимые процедуры (call sp). В Cache' есть 2 типа хранимых процедур. На основе class query и на основе classmethod. 1-ый тип - возвращает ResultSet. 2-ой - какие-то значения. Мне кажется, Вашу хранимую процедуру легко реализовать с помощью classmethod. Делаете classmethod, указываете, что это хранимая процедура. В методе Вы можете использовать встроенный или динамический SQL, объекты, прямой доступ и т.д. Что касается вызова хранимой процедуры в SQL-запросе, такая возможность есть. Посмотрите документацию . Вадим ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2006, 10:55 |
|
||
|
CREATE PROCEDURE
|
|||
|---|---|---|---|
|
#18+
Мне кажется, Вашу хранимую процедуру легко реализовать с помощью classmethod. Мне поначалу так тоже показалось, но мне не удалось понять каким образом возвращать значения, с одним все понятно, но как вернуть несколько значении ClassMethod Cube(val As %Integer) As %Query(ROWSPEC = "DID:%CacheString,OID:%CacheString,NAME:%CacheString,CCOUNT:%CacheString") [sqlproc] { ??? } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2006, 09:23 |
|
||
|
CREATE PROCEDURE
|
|||
|---|---|---|---|
|
#18+
Почему Вы возвращаете %Query. Из classmethod Вы можете вернуть сколько угодно переменных, если передаете их в метод по ссылке, а не по значению. Посмотрите пример: Область Samples Класс Sample.Person Метод StoredProcTest. ClassMethod StoredProcTest(name As %String, ByRef response As %String) As %Integer [ SqlName = Stored_Procedure_Test, SqlProc ] { // Set response to the concatenation of name. Set response = name _ "||" _ name QUIT 29 } Вадим ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2006, 10:48 |
|
||
|
CREATE PROCEDURE
|
|||
|---|---|---|---|
|
#18+
Мне такой стиль не нравится. Да и тему начального вопроса это впринципе не затрагивает. Моя задача, реляционное дерево http://rxlib.ru/WinLesson/bles3.htm, нуждается в процедуре, которая бы возвращала курсор, другими словами таблицу значений т.е %Query. Сначала пробовал вернуть его с помощью метода, но не нашол как это сделать. Получилось через Query. Вы сказали что без проблем моглибы это сделать, при помощи метода класса Если это правда , мне хотелось бы посмотреть, могу дать Вам класс дерева для Каше для которого все это нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2006, 12:50 |
|
||
|
|

start [/forum/topic.php?fid=39&tid=1559640]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
46ms |
get topic data: |
13ms |
get forum data: |
4ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
| others: | 260ms |
| total: | 419ms |

| 0 / 0 |
