Страница 1 из 1

Прямой SQL

Добавлено: 18 фев 2009, 11:09
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);
Но не работает. Причем если я пытаюсь вызвать заведомо несуществующую процедуру, то отрабатывает также без ошибок и предупреждений.

Добавлено: 18 фев 2009, 11:20
Vik
Да, поддерживаю, хотелось бы побольше узнать о DSQL и с реальными работающими примерами, тех, что в доках явно не достаточно. А то я сколько не экспериментировал с ним, отрабатывают только простейшие селекты, чуть посложнее - ошибка времени выполнения и приехали, либо же просто тихий игнор :(.

Добавлено: 18 фев 2009, 12:35
Алексей
+1

Добавлено: 18 фев 2009, 13:15
Den
Vik писал(а): ...отрабатывают только простейшие селекты, чуть посложнее...
Чуть посложнее что Вы пробовали писать ? просто интересно..
Я пока, из того мне что действительно требовалось писал тока выгребание данных из связанных 5 таблиц ,отдавая несколько параметров. Удалось добиться шобы работало.
По поводу вызова сторедных процедур толком непонятно. Слышал, что в хелпе атлантическом есть примеры как вызвать процедуру. Но вроде как саму процедуру нада описывать в теле vip.
А ведь конечно же, бывают ситуевины, когда хочется написать на НОРМАЛЬНОМ sql процедуру и запускать ее из vip своего.

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

К сожалению, разработчики не уточняют, как это можно сделать.. :sad:

Добавлено: 18 фев 2009, 14:31
Vik
Den писал(а): Чуть посложнее что Вы пробовали писать ?
Пример не сохранился, писал, по-моему, селект по шести или пяти таблицам. Причем, стоило убрать один из join - ов, как все отрабатывало нормально. Сам запрос в sql отрабатывал без проблем. Но что толку сейчас говорить, примера-то нет)

Добавлено: 18 фев 2009, 14:37
Polimer
Кстати, в архиве демо випера, который выложил LaaLaa есть хелп по DSQL.

Добавлено: 18 фев 2009, 15:08
Nikos
Polimer, если не сложно, перешлите, пожалуйста, по почте мне этот хелп - у меня ссылка не работает.

Добавлено: 18 фев 2009, 16:00
Nikos
На первый взгляд все получилось (без документации бы не догадался, конечно). Кому интересно:
Процедура должна иметь префикс S$, а вызываться уже без префикса. В моем случае будет называться S$TESTED, а вызываться совсем просто:
SqlExecDirect('tested'); - все работает.
Спасибо!!!

Добавлено: 25 фев 2009, 13:37
POMAH
Добрый день. Дабы не поднимать новую тему попробую спросить здесь.
Дано: база галактики на Oracle9i. Собственно галактическая база хранится в схеме GAl, помимо нее в базе есть еще несколько схем к галактике не относящихся.
Возможно ли используя DSQL обращаться к "посторонним" схемам? Может у кого есть такой опыт? Поделитесь примером.

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