И вновь Direct SQL
-
- топ-софт
- Сообщения: 566
- Зарегистрирован: Пт, 21/09/2007 15:19
- Имя Фамилия: Фёдор Терсин
- Откуда: Галактика Софт
- Контактная информация:
Re: И вновь Direct SQL
Подмена заранее описанной хранимки - это 100% легальная операция с точки зрения безопасности. Т.к. правами на такое действие распоряжается админ. И админ же управляет разрешением на запуск зарегистрированной хранимки.
Это никто отламывать не собирается. Незачем. Да и вряд ли это возможно.
Про create view повторюсь - спроса они не получили, поэтому остались в зачаточном состоянии с известными концептуальными и реализационными (вроде бы) проблемами. Затрудняюсь сказать, в какой степени они работоспособны в настоящее время. Желание починить есть. Ресурсов нет.
Это никто отламывать не собирается. Незачем. Да и вряд ли это возможно.
Про create view повторюсь - спроса они не получили, поэтому остались в зачаточном состоянии с известными концептуальными и реализационными (вроде бы) проблемами. Затрудняюсь сказать, в какой степени они работоспособны в настоящее время. Желание починить есть. Ресурсов нет.
-
- заказчик
- Сообщения: 46
- Зарегистрирован: Вт, 13/01/2009 10:52
- Имя Фамилия: Сергей Головчак
- Откуда: Гипротрубопровод
Re: И вновь Direct SQL
Пришел к такому же выводи и поэтому без страха опубликовал. :)cruger писал(а):Подмена заранее описанной хранимки - это 100% легальная операция с точки зрения безопасности. Т.к. правами на такое действие распоряжается админ. И админ же управляет разрешением на запуск зарегистрированной хранимки.
Это никто отламывать не собирается. Незачем. Да и вряд ли это возможно.
Спрос есть. Т.к. все этих плясок с бубном (перезаливкой данных во временную таблицу) можно легко избежать.cruger писал(а):Про create view повторюсь - спроса они не получили, поэтому остались в зачаточном состоянии с известными концептуальными и реализационными (вроде бы) проблемами. Затрудняюсь сказать, в какой степени они работоспособны в настоящее время. Желание починить есть. Ресурсов нет.
Еще неплохо было бы иметь возможность создавать хранимки без предварительной автоматической обработки.
Если скормить в asql код:
Код: Выделить всё
SQL PROCEDURE GATE(S : STRING);
BEGIN
EXECUTE IMMEDIATE S;
END
Код: Выделить всё
PROCEDURE GAL."S$GATE" ( S IN VARCHAR2 ) AS
BEGIN
S$EXECUTE; S$IMMEDIATE; S$S;
END;
Код: Выделить всё
SQL SETNOCONVERSION=ON; //Отключить режим конвертации
SQL PROCEDURE GATE(S : VARCHAR2);
BEGIN
EXECUTE IMMEDIATE S;
END
-
- топ-софт
- Сообщения: 566
- Зарегистрирован: Пт, 21/09/2007 15:19
- Имя Фамилия: Фёдор Терсин
- Откуда: Галактика Софт
- Контактная информация:
Re: И вновь Direct SQL
под режимом конвертации подразумевается что? какое-либо перековыривание переданной строки запроса?
-
- топ-софт
- Сообщения: 566
- Зарегистрирован: Пт, 21/09/2007 15:19
- Имя Фамилия: Фёдор Терсин
- Откуда: Галактика Софт
- Контактная информация:
Re: И вновь Direct SQL
Вообще-то этот вариант афаик используется в производстве, рекомендуется в подобных случаях и упоминался на форуме.m0p3e писал(а):Пришел к такому же выводи и поэтому без страха опубликовал. :)
-
- заказчик
- Сообщения: 46
- Зарегистрирован: Вт, 13/01/2009 10:52
- Имя Фамилия: Сергей Головчак
- Откуда: Гипротрубопровод
Re: И вновь Direct SQL
Да. Добавление F к именам полей. S$ по приведенному выше примеру.cruger писал(а):под режимом конвертации подразумевается что? какое-либо перековыривание переданной строки запроса?
Данная хранимка позволяет выполнить любой запрос. Поэтому и было сомнение.Вообще-то этот вариант афаик используется в производстве, рекомендуется в подобных случаях и упоминался на форуме.
-
- топ-софт
- Сообщения: 566
- Зарегистрирован: Пт, 21/09/2007 15:19
- Имя Фамилия: Фёдор Терсин
- Откуда: Галактика Софт
- Контактная информация:
Re: И вновь Direct SQL
Мы раздумывали о native sql. Но опять же - всё упирается в безопасность. Админ никак не сможет проконтролировать, что делает прикладной код под конкретным пользователем.
Точка входа - храника. Админ волен на свой страх и риск дать на неё права. Так что никаких проблем.
Точка входа - храника. Админ волен на свой страх и риск дать на неё права. Так что никаких проблем.
-
- партнер
- Сообщения: 3
- Зарегистрирован: Ср, 17/02/2010 15:16
- Имя Фамилия: Баландин Виктор
- Откуда: ЭП-Аудит
- Контактная информация:
Re: И вновь Direct SQL
Добрый день. Натолкнулся на такую проблему: при вставке записей в БД через DSQL неверно определяется пользователь (вернее он вообще не определяется). Профайлер показал, что поиск пользователя производится примерно так:
Такого пользователя нет, в X$USERS логин хранится без постфикса #1. Как-то можно с этим бороться?
Код: Выделить всё
select atl_nrec from X$USERS where XU$LOGINNAME='<имя пользователя>#1' AND XU$USEROFFICE = 1
-
- топ-софт
- Сообщения: 566
- Зарегистрирован: Пт, 21/09/2007 15:19
- Имя Фамилия: Фёдор Терсин
- Откуда: Галактика Софт
- Контактная информация:
Re: И вновь Direct SQL
Бороться надо обратившись в техподдержку.
Они там посмотрят, проверят. Если в самом деле беда - зафиксируют, будем исправлять.
Они там посмотрят, проверят. Если в самом деле беда - зафиксируют, будем исправлять.
-
- заказчик
- Сообщения: 117
- Зарегистрирован: Пт, 26/10/2007 14:16
- Имя Фамилия: Денис Кучин
- Откуда: Геомостпроект НПО
Re: И вновь Direct SQL
Уважаемые разработчики, хотел бы прояснить один момент.
При использовании вызова посредством дскл хранимых процедур :
sqlExecStmt(stmt,'Procedure1('+param1+','+param2....)
обратно с сервера бд возвращается набор данных в Атлантис , и , с помощью разных приемов (sqlfetch, sqlfetchinto и т.п.) данными пользуешься в vip-программе.
А как все это работает если Procedure1 - это объявленная SQL Function дскл - т.е. она возвращает какое то скалярное значение. (return as table, вроде как нельзя в дскл тип функции возвращаемый.). Дальше чтобы получить это одно единственное значение функции все равно пользоваться той же цепочкой работы ? Нельзя никак :
var i : integer
i := Procedure1(param1,param2...)
где Procedure1 это SQL Function Procedure1(param1,param2...) : integer;
При использовании вызова посредством дскл хранимых процедур :
sqlExecStmt(stmt,'Procedure1('+param1+','+param2....)
обратно с сервера бд возвращается набор данных в Атлантис , и , с помощью разных приемов (sqlfetch, sqlfetchinto и т.п.) данными пользуешься в vip-программе.
А как все это работает если Procedure1 - это объявленная SQL Function дскл - т.е. она возвращает какое то скалярное значение. (return as table, вроде как нельзя в дскл тип функции возвращаемый.). Дальше чтобы получить это одно единственное значение функции все равно пользоваться той же цепочкой работы ? Нельзя никак :
var i : integer
i := Procedure1(param1,param2...)
где Procedure1 это SQL Function Procedure1(param1,param2...) : integer;
-
- топ-софт
- Сообщения: 566
- Зарегистрирован: Пт, 21/09/2007 15:19
- Имя Фамилия: Фёдор Терсин
- Откуда: Галактика Софт
- Контактная информация:
Re: И вновь Direct SQL
sql select top 1 <func_call> from <any_table> into <vip_variable>;
параметры передавать через конструкцию :<expression>
в общем - rtfm
в перспективе, конечно, можно было бы убрать top 1 & from <any_table>...
параметры передавать через конструкцию :<expression>
в общем - rtfm
в перспективе, конечно, можно было бы убрать top 1 & from <any_table>...
-
- заказчик
- Сообщения: 117
- Зарегистрирован: Пт, 26/10/2007 14:16
- Имя Фамилия: Денис Кучин
- Откуда: Геомостпроект НПО
Re: И вновь Direct SQL
Существует ли возможность в dsql использовать pick как буфер выбранных значений пользователем ? Сейчас если в запросе используешь pick то учитываются все значения пик по wlist-конкретному (всех пользователей). В доке не нашел этого момента,хотя имеет место быть вот это в примере встроенного прямого скуля:
SQL delete from pick;
Или может уже есть такая проблема в ПИР и планируется решиться ?
SQL delete from pick;
Или может уже есть такая проблема в ПИР и планируется решиться ?
- larin
- топ-софт
- Сообщения: 228
- Зарегистрирован: Пн, 10/09/2007 12:13
- Имя Фамилия: Михаил Ларин
- Откуда: ТопCофт
- Контактная информация:
Re: И вновь Direct SQL
Есть такая. ПИР 102.102421 "При обращении к пользовательским таблицам через DSQL не накладывается фильтр по коду пользователя".den писал(а):Существует ли возможность в dsql использовать pick как буфер выбранных значений пользователем ? Сейчас если в запросе используешь pick то учитываются все значения пик по wlist-конкретному (всех пользователей). В доке не нашел этого момента,хотя имеет место быть вот это в примере встроенного прямого скуля:
SQL delete from pick;
Или может уже есть такая проблема в ПИР и планируется решиться ?
Решение заявлено в Атлантисе 5.4.38 ожидайте выхода.