Прямой SQL...

Приемы и подходы, обмен опытом

Модераторы: Screw, larin

masygreen
партнер
Сообщения: 112
Зарегистрирован: Чт, 20/03/2008 09:10
Имя Фамилия: Максим Черепанов
Откуда: IT
Контактная информация:

Прямой SQL...

Сообщение masygreen »

Добрый день!
Может кто пользовался сабжем?

Гал.8.1 SQL 2005 ARD

Никак не получается воспользоваться прямым sql ...
Пример из доки ну не работает и всё.

Где надо пошаманить чтоб этот функционал заработал? :-?

Код: Выделить всё

  
var 
  stmt: longInt;
  str_d:string;
...
stmt := sqlAllocStmt;     
sqlPrepare(stmt, 'select nodoc from :dogovor');
sqlBindCol(stmt, 1, str_d);
sqlExecute(stmt); 

while sqlFetch(stmt) = tsOk do
  Message(str_d);

sqlFreeStmt(stmt);
sanny
топ-софт
Сообщения: 9
Зарегистрирован: Ср, 06/02/2008 11:56
Имя Фамилия: Александр Позднев
Откуда: ТопСофт
Контактная информация:

Сообщение sanny »

Для отладки работы DSQL следует пользоваться логом драйвера соответствующей БД, который формируются в каталоге запуска Галактики.
Например:
- MS70DRV.LOG
- ORA90DRV.LOG

В вашем случае не надо было ставить ":" перед таблицами.
Дело в том, что существующий пример в документации для теперешней версии DSQL не очень актуальный.

На Оракле я пример проверил - работает без ":". На SQL 2005 не смотрел.
myannik
топ-софт
Сообщения: 5
Зарегистрирован: Вт, 23/10/2007 15:48
Имя Фамилия: Владимир Мянниксон
Откуда: Галактика Софт
Контактная информация:

Сообщение myannik »

Документация будет актуализирована. Новая редакция войдет в очередной выпуск диска с документацией 810_7_04.08(плановая дата выхода апрель 2008 г.) и комплект поставки Атлантис 5.3.20 (плановый срок сборки 31.03.2008).
Последний раз редактировалось myannik Ср, 26/03/2008 16:09, всего редактировалось 1 раз.
masygreen
партнер
Сообщения: 112
Зарегистрирован: Чт, 20/03/2008 09:10
Имя Фамилия: Максим Черепанов
Откуда: IT
Контактная информация:

Сообщение masygreen »

Спасибо за ответ .. :)
Очень хочется пользоваться прямы SQL ..
den
заказчик
Сообщения: 117
Зарегистрирован: Пт, 26/10/2007 14:16
Имя Фамилия: Денис Кучин
Откуда: Геомостпроект НПО

Сообщение den »

Ну тогда используй лучше TSQL92 стандартный :)
masygreen
партнер
Сообщения: 112
Зарегистрирован: Чт, 20/03/2008 09:10
Имя Фамилия: Максим Черепанов
Откуда: IT
Контактная информация:

Сообщение masygreen »

.... ммм .. я наверно чегойто не понимаю ..а можно вот напримет так наривать в TSQL92 ???????

Код: Выделить всё

select dogovor.nodoc, sum(calplan.summa)
from dogovor, calplan
where ((dogovor.nrec==calplan.cdogovor))
order by dogovor.nodoc
den
заказчик
Сообщения: 117
Зарегистрирован: Пт, 26/10/2007 14:16
Имя Фамилия: Денис Кучин
Откуда: Геомостпроект НПО

Сообщение den »

Код: Выделить всё

select t$dogovor.f$nodoc, sum(t$calplan.f$summa) 
from t$dogovor, t$calplan 
where t$dogovor.f$nrec=t$calplan.f$cdogovor
group by t$dogovor.f$nodoc
order by t$dogovor.f$nodoc
masygreen
партнер
Сообщения: 112
Зарегистрирован: Чт, 20/03/2008 09:10
Имя Фамилия: Максим Черепанов
Откуда: IT
Контактная информация:

Сообщение masygreen »

за назойливось извените .. но кусочек кода с исполнением и доступом к этому запросу ???
и Как это использовать из VIP ....
den
заказчик
Сообщения: 117
Зарегистрирован: Пт, 26/10/2007 14:16
Имя Фамилия: Денис Кучин
Откуда: Геомостпроект НПО

Сообщение den »

Кратко, но по сути примерно так :

1. Пишете нужный скрипт в виде процедуры MSSQl. Содержимым его и будет являться вышеупомянутый кусок кода.
Только нужно сделать выгрузку этого селекта в подходящую незаюзанную таблицу БД/свою таблицу(все зависит от того, подправлен ли словарь у Вас...) . Все это делается именно в этой созданной процедуре.
Если нужно, то вызываете его с нужными параметрами.
2. Находите какую нить незаюзанную таблицу БД/свою таблицу и правите триггер, например на insert.
3. Далее пишите свой вип/ард и вставляете в таблицу, укаханную в п. 1 какое нить значение. Отрабатывает Ваша процедура на севере и далее в теле вип/ард можно взять из результирующей таблицы данные и обработать их нужным Вам образом.

Лично на своем опыте могу сказать, что отчет такой обычно в разы формируется быстрее,нежели аналогичный ,сделанный с помощью средств атлантиса. Особенно это заметно на больших объемах данных.
masygreen
партнер
Сообщения: 112
Зарегистрирован: Чт, 20/03/2008 09:10
Имя Фамилия: Максим Черепанов
Откуда: IT
Контактная информация:

Сообщение masygreen »

Денис Кучин -Это гениальное решение :)
ПЛЯСКИ С БУБНАМИ ОТДЫХАЮТ !!!!!!!!!!!
den
заказчик
Сообщения: 117
Зарегистрирован: Пт, 26/10/2007 14:16
Имя Фамилия: Денис Кучин
Откуда: Геомостпроект НПО

Сообщение den »

Если в Вашем ответе нотки скептицизма и нерациональности по поводу такого подхода, то все же зря...)
masygreen
партнер
Сообщения: 112
Зарегистрирован: Чт, 20/03/2008 09:10
Имя Фамилия: Максим Черепанов
Откуда: IT
Контактная информация:

Сообщение masygreen »

Денис это не скептицизм .. спасибо за хорошую идею .. это действительно ИДЕЯ!
но я предпочитаю не трогать базы без крайней необходимоти, а добавлять процедуры и таблицы ради каждого отчета ..
к тому же это иследовательский вопрос .. скажем так не первой важности ... прото согласно описания галакики это можно было сделать малыми затратами...
Спасибо..
den
заказчик
Сообщения: 117
Зарегистрирован: Пт, 26/10/2007 14:16
Имя Фамилия: Денис Кучин
Откуда: Геомостпроект НПО

Сообщение den »

Видимо, Вы еще не сталкивались с тормозами работы отчетов на больших объемах данных БД Галактики.
Как только временные характеристики разного рода отчетов начнут поджимать критично, то озадачитесь проблемой этой посерьезнее :-)
masygreen
партнер
Сообщения: 112
Зарегистрирован: Чт, 20/03/2008 09:10
Имя Фамилия: Максим Черепанов
Откуда: IT
Контактная информация:

Сообщение masygreen »

Сталкивался .. но оптимизацией SQL, алгоритма и загрузкой во временные таблицы памяти..
удавалось добится приемленого времени .... 30 мин .. допустим :)
cruger
топ-софт
Сообщения: 566
Зарегистрирован: Пт, 21/09/2007 15:19
Имя Фамилия: Фёдор Терсин
Откуда: Галактика Софт
Контактная информация:

Сообщение cruger »

На самом деле с помощью прямого скль как раз можно обойтись без этих свистоплясок с подменой существующих таблиц. Больше того, на випе можно делать свои хранимые процедуры, работающие со стандартными таблицами. Ну и наконец, на эти процедуры выдаются права в соответствии с правами на базовые таблицы.
Ответить