![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
PL/SQL - хочу странного (а может и нет)
Dennis I. Komarov © (2012-11-13 22:20:00)оракуль может подобное?
транслит:
function (a1, a2, ..., am, var b1, b2, ..., bn): TDataSet;
т.е.
FUNCTION...
in
in
out
out
RETURN
на выходе рекордсет (CURSOR наверное)
если да, то пример плз
Медвежонок Пятачок (2012-12-07 23:38:00) [1]положи туда адошный датапакет в xml
Dennis I. Komarov (2012-12-07 23:06:00) [2]
> Сказано же было - на сервере - ХП, на клиенте TADODataSet
> = TADOCommand.Execute + F1
Так вопрос, что в retern класть оракловый...
т.е. что возвращает select, и как заставить функцию возвращать это (с т.з. оракуля)
MsGuns (2012-12-06 19:13:00) [3]>Dennis I. Komarov © (05.12.12 12:26) [37]
>и как результат поймать в dataset?
Сказано же было - на сервере - ХП, на клиенте TADODataSet = TADOCommand.Execute + F1
Кука съела ник (2012-12-05 16:52:00) [4]Dennis I. Komarov © (05.12.12 16:02) [39]
Все можно сделать, но в древнем Китае желающим странного отрубали голову.
Dennis I. Komarov (2012-12-05 16:02:00) [5]Т.е. результат селекта в return положить низя (в том же виде)?
Ну не возвращает результат такого селекта. А вот в SQL Novigator дает результат...
Игорь Шевченко (2012-12-05 14:14:00) [6]Dennis I. Komarov © (05.12.12 12:26) [37]
Отдельно функция, отдельно запрос на dataset
Dennis I. Komarov (2012-12-05 12:26:00) [7]Ладно, сменим подход... (Кстати почему?)
Тогда предположим, что out-параметров нет. Как функция должна выглядеть ( и как результат поймать в dataset)?
Select через ado не проходит, слишком сложный видимо, поэтому и нужна функция
Игорь Шевченко (2012-12-05 11:53:00) [8]
> чтобы не делать несколько запросов к БД:
штрафуют ? в оракле подобный подход массово не применяется
Dennis I. Komarov (2012-12-05 00:16:00) [9]
> зачем тебе одновременно и входные параметры и выходные параметры
> и набор данных ?
чтобы не делать несколько запросов к БД:
функция собирает статистику за определенное время:
ID,DateIn, DateOut - IN
Значение на начало, на конец периода - OUT
DataSet - операции
Игорь Шевченко (2012-12-04 23:20:00) [10]Я про другое - нафиг такая фукнция нужна ?
зачем тебе одновременно и входные параметры и выходные параметры и набор данных ?
Dennis I. Komarov (2012-12-04 23:08:00) [11]
> А как ты себе представляешь такую процедуру и работу с ней
> ?
TAdoDataSet.Create
Connection:=
Parameters.Create(
...
Parameters.Create(
CommandText:='select
// CommandText:=bla-bla DataSet не возвращает
Active := true
или что-то в этом духе
Игорь Шевченко (2012-12-04 22:29:00) [12]
> чет не работает
Больно слышать.
А как ты себе представляешь такую процедуру и работу с ней ?
Dennis I. Komarov (2012-12-04 22:17:00) [13]
select * from table (bla-bla(...));чет не работает (уже находил)
как ее в DataSet загнать, что-то так и не сообразил
еще нашел объявить объектROWTYPEи далееTABLE ofно в oracle не очень хотелось лезть.
Есть процедура, и она возвращает и out-параметры и TCursor (набор данных), а вот как этот TCursor отправить в DataSet не трогая оракуль?
Игорь Шевченко (2012-12-04 21:56:00) [14]http://www.google.ru/search?q=select+from+ref+cursor+delphi
http://www.delphimaster.net/view/3-86632
Dennis I. Komarov (2012-12-04 21:37:00) [15]
TYPE TCursor IS REF CURSOR;
CREATE OR REPLACE FUNCTION bla-bla (
a_1 IN NUMBER,
a_2 IN VARCHAR,
a_3 OUT NUMBER,
a_4 OUT NUMBER
) RETURN TCursor
Как получить из нее набор данных (TDataSet) в Delphi?
Игорь Шевченко (2012-11-23 22:14:00) [16]
> Стандартный формат даты ORACLE для ввода и вывода имеет
> вид DD-MON-YY, например:
Этот формат зависит от настроек сеанса, сервера, базы данных.
"The default date format for an Oracle date value is derived from the NLS_DATE_FORMAT and NLS_DATE_LANGUAGE initialization parameters"
http://docs.oracle.com/cd/B19306_01/server.102/b14225/ch4datetime.htm#i1006006
Любите доку, источник знаний
Dennis I. Komarov (2012-11-23 21:26:00) [17]Пардон, а вот:
Тип данных DATE
Тип данных DATE хранит значения в виде точек времени (т.е. дату и время). Тип данных DATE запоминает год (включая век), месяц, день, часы, минуты и секунды. ORACLE может хранить даты в диапазоне от 1 января 4712 года до н.э. до 31 декабря 4712 года нашей эры. Если в маске формата не указано BC (до н.э.), предполагается по умолчанию наша эра (AD).
ORACLE использует для хранения дат собственный внутренний формат. Данные дат хранятся в фиксированных полях длиной семь байт, соответствующих веку, году, месяцу, дню, часу, минуте и секунде.
Стандартный формат даты ORACLE для ввода и вывода имеет вид DD-MON-YY, например:
'13-NOV-92'
Dennis I. Komarov (2012-11-23 21:20:00) [18]
> ANSI стандарт даты в виде литерала: DATE 'YYYY-MM-DD'
Да, знаю... но ведь тоже стринг...
(и если не изменили ручками, а ведь могут)
Игорь Шевченко (2012-11-23 20:39:00) [19]
> Может есть другие встроенные функции?
ANSI стандарт даты в виде литерала: DATE 'YYYY-MM-DD'
Dennis I. Komarov (2012-11-23 19:05:00) [20]Спасибо!
Еще вопрос:
Как приводите TDateTime к оракловой DATE? Что-то мне не ндра каждый раз делать строку и конвертировать to_date.
to_date(..., 'J') ближе, но тоже не красиво...
Может есть другие встроенные функции?