Прямой SQL
Модераторы: m0p3e, edward_K, Модераторы
-
- Местный житель
- Сообщения: 1844
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
- Контактная информация:
Re: Прямой SQL
А это так зачем то нужно так ...вызывать внутри S$UPKATBOX процедуру UPDKATBOX_PR ? Вроде как строчку :savov писал(а): ...
3. Средствами TOAD изменил функцию:Код: Выделить всё
CREATE OR REPLACE FUNCTION "S$UPKATBOX"(NRECREC IN VARCHAR2, MAXC IN NUMBER) RETURN NUMBER IS procedure UPDKATBOX_PR is pragma autonomous_transaction; begin UPDATE VRN.KATBOX SET FCOUNT=MAXC WHERE FNREC=NRECREC; COMMIT; END; BEGIN UPDKATBOX_PR; RETURN 1; END;
UPDATE VRN.KATBOX SET FCOUNT=MAXC WHERE FNREC=NRECREC;
может реализовать просто в UDF S$UPKATBOX это попробовать ?
А вообще с дскл под JS лучше разработчиков Вам озадачить - приблуда специфичная это и редко используемая,видимо. И здесь можете долго прождать ответа
-
- Местный житель
- Сообщения: 589
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Воронеж ОАО Верофарм. Воронеж
Re: Прямой SQL
Процедура вызывается потому, что в запросе select не проходит update, ругается сам Оракл. Что есть такое UDF?
-
- Местный житель
- Сообщения: 589
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Воронеж ОАО Верофарм. Воронеж
Re: Прямой SQL
Тема продолжается.
Попробовал получить данные в одной базе из другой.
В Oracle сделал
Делаю запрос в TOAD - работает.
В Галактике запрос
дает в log ошибку - синтаксическая ошибка "@".
Возожно, что надо по-другому записать запрос, но найти не могу.
Попробовал получить данные в одной базе из другой.
В Oracle сделал
Код: Выделить всё
create database link vrnt connect to savinkov IDENTIFIED BY jnxtn1967 using 'vrnt';
В Галактике запрос
Код: Выделить всё
sstr2 = ' select katmc.name from katmc@vrnt where katmc.name='+names+';';
дает в log ошибку - синтаксическая ошибка "@".
Возожно, что надо по-другому записать запрос, но найти не могу.
Re: Прямой SQL
Вот здесь выкладывал как читать данные через линки в оракле.
http://www.tyumbit.ru/gal_forum/viewtop ... =8&t=10938
http://www.tyumbit.ru/gal_forum/viewtop ... =8&t=10938
-
- Местный житель
- Сообщения: 589
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Воронеж ОАО Верофарм. Воронеж
Re: Прямой SQL
mop3e, a как сие под JS запустить? Мне JS шибко нужен
Re: Прямой SQL
С JS дела не имел. Не подскажу.
-
- Местный житель
- Сообщения: 589
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Воронеж ОАО Верофарм. Воронеж
Re: Прямой SQL
После вмешательства ТП:m0p3e писал(а):С JS дела не имел. Не подскажу.
1. Процедуру сначала создаем в Галатике ( МОЖНО! в саппорте дать запрос SQL FUNCTION имя(параметры) : тип {})
2. Проверяем права и даем права.
3. Изменяем в оракле
4. Проверяем работоспособность в SQL саппорта (например):
Код: Выделить всё
sql select ukat(#comp(562949953421323),0) from katbox;
5. Пишем в JS. Причем подметил, что вроде код:
Код: Выделить всё
DSQL_BindCol(iHandle4_2, 1, 'double');
if (DSQL_GetRecord(iHandle4_2)==0)
{ Message(DSQL_GetFieldValueByNum(1),0);
}
-
- Местный житель
- Сообщения: 552
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Челябинск
- Контактная информация:
Re: Прямой SQL
Den, прошу прокомментировать создание функции SQL Function .. (): компилятор ругается, говорит- ожидался QUERYDen писал(а):Вообще вызов скалярной функции в dsql для получения просто какого то значения обратно "со своими прибабахами" ))
Нет возможности сейчас потестить на оракле, но под мсскуль работает вот так(по идее и под оракла должно тоже) на простом примере:
Код: Выделить всё
SQL Function GetKontrByMaxNrec (): comp; var res : comp; { res:=(Select max(nrec) from katorg); return res; } Interface test_call_fun; create view ...
Код: Выделить всё
Interface RepLogistika 'Учёт транспорта "' escclose,blue,AlwaysReturn;
Show at (1,1,240,40);
Var
cBasedoc_, cKatorg_, cKndriver_, cTrans_, cKatorgT_, cKatsopr_, cDovFio_, cDover_: comp;
sdtBasedo_, sKatorg_, sVodit_, sCo_, sNazna_: string;
#include Table.vpp
#include CreateView.vpp
SQL Function IntToDateString (_DateInt: integer) : string;
{
var res : string[10];
res:='111111';
return res;
}
...
-
- Местный житель
- Сообщения: 1844
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
- Контактная информация:
Re: Прямой SQL
дело в том, что SQl Function неизвестная штука для Interface
такую конструкцию необходимо регистрировть "отдельным батчем"
Вообщем, см. vipprog и там в поиске sql function и в самом низу "хранимые процедуры и функции"
Да и правильнее вот так :
такую конструкцию необходимо регистрировть "отдельным батчем"
Вообщем, см. vipprog и там в поиске sql function и в самом низу "хранимые процедуры и функции"
Да и правильнее вот так :
Код: Выделить всё
SQL Function IntToDateString (_DateInt: integer) : string;
var res : string[10];
{
res:='111111';
return res;
}
-
- Местный житель
- Сообщения: 552
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Челябинск
- Контактная информация:
Re: Прямой SQL
Ну раз она интерфейсу неизвестна- вон её из интерфейса!
Так без ошибок скомпилировалось. Благодарю, Den!
Код: Выделить всё
SQL Function IntToDateString (_DateInt: integer) : string;
var res : string[10];
{
res:='111111';
return res;
}
Interface RepLogistika 'Учёт транспорта "' escclose,blue,AlwaysReturn;
Show at (1,1,240,40);
Var
cBasedoc_, cKatorg_, cKndriver_, cTrans_, cKatorgT_, cKatsopr_, cDovFio_, cDover_: comp;
sdtBasedo_, sKatorg_, sVodit_, sCo_, sNazna_: string;
#include Table.vpp
#include CreateView.vpp
...
-
- Местный житель
- Сообщения: 552
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Челябинск
- Контактная информация:
Re: Прямой SQL
Ещё вопрос по этой функции: как сделать, чтобы она, получив входной параметр Longint, вернула бы строку?
Пробовал разные преобразования: varchar, to_char- пустое значение возвращает.
Вообще смысл функции в том, чтобы получить из набора записей dsql сразу строковое значение даты.
Код: Выделить всё
SQL Function IntToDateString (_DateInt: integer) : string;
var res : string[10];
{
res:=string(_DateInt); //Здесь пустое значение возвращает
return res;
}
Вообще смысл функции в том, чтобы получить из набора записей dsql сразу строковое значение даты.
-
- Местный житель
- Сообщения: 1844
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
- Контактная информация:
Re: Прямой SQL
а в чем глубокий смысл такой функции, если не секрет - получить дату в строковом виде в dsql ?
-
- Местный житель
- Сообщения: 552
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Челябинск
- Контактная информация:
Re: Прямой SQL
Смысл в том, ради чего dsql применяется- скорость выборки. Можно, конечно, получить в переменную longint, далее на випе переделать в строку- но так не хочу. Вообщем так вот придумал: сделал три функции, получаю дату по кусочкам, потом собираюDen писал(а):а в чем глубокий смысл такой функции, если не секрет - получить дату в строковом виде в dsql ?
Код: Выделить всё
SQL Function IntToDateStringD (_DateInt: longint) : string;
var res : string[2];
{res:= (_DateInt - (floor(_DateInt / 65536) * 65536 + floor((_DateInt - floor(_DateInt / 65536) * 65536) / 256) * 256)); return res;}
SQL Function IntToDateStringM (_DateInt: longint) : string;
var res : string[2];
{res:= FLOOR((_DateInt - FLOOR(_DateInt / 65536) * 65536) / 256); return res;}
SQL Function IntToDateStringY (_DateInt: longint) : string;
var res : string[4];
{res:= FLOOR(_DateInt / 65536); return res;}
Interface RepLogistika 'Учёт транспорта и перевозки ООО "ГК МКС"' escclose,blue,AlwaysReturn;
Show at (1,1,240,40);
...
Function AssemdleDate(sD: string[2]; sM: string[2]; sY: string[4]): string[10]; {Result:= sD+'/'+sM+'/'+sY;}
...
-
- Местный житель
- Сообщения: 1844
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
- Контактная информация:
Re: Прямой SQL
т.е. если Вы пишете , например, в саппорт
у Вас в поле выборки число, а не дата ?
Код: Выделить всё
sql select atl_lastdate from katorg;