Прямой SQL

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
Nikos
Местный житель
Сообщения: 577
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Томск

Прямой SQL

Сообщение Nikos »

Добрый день! Возникла задача запускать хранимые процедуры Oracle из Галактики. Решил воспользоваться DSQL, но не могу нигде найти по нему документацию, на форуме тоже мало чего нашел. Где можно про эту штуку почитать? Ну а если документации нет, то, может, поможете код подправить, чтоб работал. Используя форум у меня получилось так:

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

    Var stmt 	: LongInt;
    Var stmt_str: LongInt;
    Var nameOrg	: String;

    stmt := sqlAllocStmt;
    sqlAddStr(stmt_str, 'exec tested');
    sqlPrepare(stmt, stmt_str);
    sqlFreeStr(stmt_str);
    sqlExecute(stmt);
    sqlFreeStmt(stmt);
Но не работает. Причем если я пытаюсь вызвать заведомо несуществующую процедуру, то отрабатывает также без ошибок и предупреждений.
Vik
Местный житель
Сообщения: 370
Зарегистрирован: 28 сен 2006, 15:43
Откуда: Санкт-Петербург
Контактная информация:

Сообщение Vik »

Да, поддерживаю, хотелось бы побольше узнать о DSQL и с реальными работающими примерами, тех, что в доках явно не достаточно. А то я сколько не экспериментировал с ним, отрабатывают только простейшие селекты, чуть посложнее - ошибка времени выполнения и приехали, либо же просто тихий игнор :(.
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

Сообщение Алексей »

+1
Den
Местный житель
Сообщения: 1844
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Сообщение Den »

Vik писал(а): ...отрабатывают только простейшие селекты, чуть посложнее...
Чуть посложнее что Вы пробовали писать ? просто интересно..
Я пока, из того мне что действительно требовалось писал тока выгребание данных из связанных 5 таблиц ,отдавая несколько параметров. Удалось добиться шобы работало.
По поводу вызова сторедных процедур толком непонятно. Слышал, что в хелпе атлантическом есть примеры как вызвать процедуру. Но вроде как саму процедуру нада описывать в теле vip.
А ведь конечно же, бывают ситуевины, когда хочется написать на НОРМАЛЬНОМ sql процедуру и запускать ее из vip своего.
Den
Местный житель
Сообщения: 1844
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Сообщение Den »

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

К сожалению, разработчики не уточняют, как это можно сделать.. :sad:
Vik
Местный житель
Сообщения: 370
Зарегистрирован: 28 сен 2006, 15:43
Откуда: Санкт-Петербург
Контактная информация:

Сообщение Vik »

Den писал(а): Чуть посложнее что Вы пробовали писать ?
Пример не сохранился, писал, по-моему, селект по шести или пяти таблицам. Причем, стоило убрать один из join - ов, как все отрабатывало нормально. Сам запрос в sql отрабатывал без проблем. Но что толку сейчас говорить, примера-то нет)
Polimer
Местный житель
Сообщения: 489
Зарегистрирован: 27 янв 2006, 12:46
Откуда: Москва

Сообщение Polimer »

Кстати, в архиве демо випера, который выложил LaaLaa есть хелп по DSQL.
Nikos
Местный житель
Сообщения: 577
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Томск

Сообщение Nikos »

Polimer, если не сложно, перешлите, пожалуйста, по почте мне этот хелп - у меня ссылка не работает.
Nikos
Местный житель
Сообщения: 577
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Томск

Сообщение Nikos »

На первый взгляд все получилось (без документации бы не догадался, конечно). Кому интересно:
Процедура должна иметь префикс S$, а вызываться уже без префикса. В моем случае будет называться S$TESTED, а вызываться совсем просто:
SqlExecDirect('tested'); - все работает.
Спасибо!!!
POMAH
Посетитель
Сообщения: 49
Зарегистрирован: 29 мар 2005, 17:49

Сообщение POMAH »

Добрый день. Дабы не поднимать новую тему попробую спросить здесь.
Дано: база галактики на Oracle9i. Собственно галактическая база хранится в схеме GAl, помимо нее в базе есть еще несколько схем к галактике не относящихся.
Возможно ли используя DSQL обращаться к "посторонним" схемам? Может у кого есть такой опыт? Поделитесь примером.
Nikos
Местный житель
Сообщения: 577
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Томск

Сообщение Nikos »

Новая проблема с вызовом процедур.
Написал интерфейс, протестировал, отдал пользователям. Но оказалось, что работает это только для администратора в Галактике. По началу решил, что проблема с правами в Oracle, дал всевозможные, но так и не работает. Причем если запускать процедуру из, например, SQL+, то все в порядке. В Саппорте в правах пользователя есть галочка "Расширенные права для работы прямого SQL", ставил - не помогает. Есть вкладка "Права на хранимые процедуры", возможно, там нужно как-то регистрировать?
Ответить