Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Просьба помочь в решении задачки.. Oracle PL\sql / 20 сообщений из 20, страница 1 из 1
17.10.2016, 11:05
    #39328046
Просьба помочь в решении задачки.. Oracle PL\sql
Есть ХП:

CREATE OR REPLACE PROCEDURE primer(
v_date VARCHAR2,
v_date2 VARCHAR2,
v_io VARCHAR2)
AS
vivod VARCHAR2(100);
BEGIN
DECLARE
CURSOR vivad
IS
SELECT p.*
FROM pizdec p
WHERE
/*Задаем дату открытия счета*/
to_date (p.DATE_OPEN) BETWEEN to_date (v_date) AND to_date (v_date2)
/*Задаем точку*/
AND p.IO = v_io
;
in_vivad vivad%ROWTYPE;
BEGIN
DBMS_OUTPUT.enable;
OPEN vivad;
FETCH vivad INTO in_vivad;
LOOP
DBMS_OUTPUT.put_line(in_vivad.S4ET||' '||in_vivad.DATE_OPEN||' '||in_vivad.DATE_PROV);
FETCH vivad INTO in_vivad;
EXIT
WHEN vivad%NOTFOUND;
END LOOP;
CLOSE vivad;
END;
END;


необходимо после успешной отработки ХП, DBMS_OUTPUT.put_line(in_vivad.S4ET||' '||in_vivad.DATE_OPEN||' '||in_vivad.DATE_PROV); - это необходимо запиливать в файл exel (*.xls, *.csv).
...
Рейтинг: 0 / 0
17.10.2016, 11:14
    #39328048
Просьба помочь в решении задачки.. Oracle PL\sql
Джонни_ИнглишЕсть ХП:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
CREATE OR REPLACE PROCEDURE primer(
    v_date    VARCHAR2,
    v_date2   VARCHAR2,
    v_io VARCHAR2)
AS
  vivod VARCHAR2(100);
BEGIN
  DECLARE
    CURSOR vivad
    IS
      SELECT p.*
      FROM pizdec p
      WHERE
        /*Задаем дату открытия счета*/
        to_date (p.DATE_OPEN) BETWEEN to_date (v_date) AND to_date (v_date2)
         /*Задаем точку*/
      AND p.IO = v_io
      ;
    in_vivad vivad%ROWTYPE;
  BEGIN
    DBMS_OUTPUT.enable;
    OPEN vivad;
    FETCH vivad INTO in_vivad;
    LOOP
      DBMS_OUTPUT.put_line(in_vivad.S4ET||' '||in_vivad.DATE_OPEN||' '||in_vivad.DATE_PROV);
      FETCH vivad INTO in_vivad;
      EXIT
    WHEN vivad%NOTFOUND;
    END LOOP;
    CLOSE vivad;
  END;
END;



необходимо после успешной отработки ХП, DBMS_OUTPUT.put_line(in_vivad.S4ET||' '||in_vivad.DATE_OPEN||' '||in_vivad.DATE_PROV); - это необходимо запиливать в файл exel (*.xls, *.csv).

Используй теги для оформления кода, а также приведи версию БД.
...
Рейтинг: 0 / 0
17.10.2016, 11:22
    #39328055
--Eugene--
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просьба помочь в решении задачки.. Oracle PL\sql
Джонни_Инглишнеобходимо...успехов тебе с твоим подходом к поиску решения
...
Рейтинг: 0 / 0
17.10.2016, 11:29
    #39328059
Vadim Lejnin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просьба помочь в решении задачки.. Oracle PL\sql
Джонни_ИнглишЕсть ХП:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
CREATE OR REPLACE PROCEDURE primer(
    v_date    VARCHAR2,
    v_date2   VARCHAR2,
    v_io VARCHAR2)
AS
  vivod VARCHAR2(100);
BEGIN
  DECLARE
    CURSOR vivad
    IS
      SELECT p.*
      FROM pizdec p
      WHERE
        /*Задаем дату открытия счета*/
        to_date (p.DATE_OPEN) BETWEEN to_date (v_date) AND to_date (v_date2)
         /*Задаем точку*/
      AND p.IO = v_io
      ;
    in_vivad vivad%ROWTYPE;
  BEGIN
    DBMS_OUTPUT.enable;
    OPEN vivad;
    FETCH vivad INTO in_vivad;
    LOOP
      DBMS_OUTPUT.put_line(in_vivad.S4ET||' '||in_vivad.DATE_OPEN||' '||in_vivad.DATE_PROV);
      FETCH vivad INTO in_vivad;
      EXIT
    WHEN vivad%NOTFOUND;
    END LOOP;
    CLOSE vivad;
  END;
END;



необходимо после успешной отработки ХП,
Код: plsql
1.
DBMS_OUTPUT.put_line(in_vivad.S4ET||' '||in_vivad.DATE_OPEN||' '||in_vivad.DATE_PROV);

- это необходимо запиливать в файл exel (*.xls, *.csv).

Что ты написал, непонятно, от слова совсем
:)
Код: plsql
1.
2.
3.
4.
5.
sqlplus user/password@tnsalias
SQL> set serveroutput on pages 0 line 4000 trimspool on head off feedback off
SQL> spool file.csv
SQL> execute primer(......)



p.s. того... этого ... ну.... какба по русски напиши, да.
...
Рейтинг: 0 / 0
17.10.2016, 11:52
    #39328075
Просьба помочь в решении задачки.. Oracle PL\sql
Vadim Lejnin,

Задача такая: вызвать процедуру с параметрами
set SERVEROUTPUT ON;
begin primer ('01.01.2014', '01.02.2014', 1);
end;

поля подставляются в ХП соответственно:
v_date VARCHAR2,
v_date2 VARCHAR2,
v_iotdnum VARCHAR2

выполняется выборка:
SELECT p.*
FROM pizdec p
WHERE
/*Задаем дату открытия счета*/
to_date (p.DATE_OPEN) BETWEEN to_date (v_date) AND to_date (v_date2)
/*Задаем точку*/
AND p.IOTDNUM = v_iotdnum

Ожидаемый выход: табличка в EXEL после выполнения вызова ХП.

Сейчас выход: DBMS_OUTPUT.put_line(in_vivad.S4ET||' '||in_vivad.DATE_OPEN||' '||in_vivad.DATE_PROVODKI);
...
Рейтинг: 0 / 0
17.10.2016, 12:00
    #39328084
Просьба помочь в решении задачки.. Oracle PL\sql
Джонни_Инглиш,

выполняй селект в гуе и экспортируй в эхель.
...
Рейтинг: 0 / 0
17.10.2016, 12:02
    #39328089
Просьба помочь в решении задачки.. Oracle PL\sql
оккаматика,

Нет не вариант) В дальнейшем это будет прикручиваться к операторской форме.
...
Рейтинг: 0 / 0
17.10.2016, 13:27
    #39328153
Vadim Lejnin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просьба помочь в решении задачки.. Oracle PL\sql
Джонни_ИнглишVadim Lejnin,

Задача такая: вызвать процедуру с параметрами
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
set SERVEROUTPUT ON;
begin  primer ('01.01.2014', '01.02.2014', 1);
 end;

поля подставляются в ХП соответственно:
    v_date    VARCHAR2,
    v_date2   VARCHAR2,
    v_iotdnum VARCHAR2

выполняется выборка:
 SELECT p.*
      FROM pizdec p
      WHERE
        /*Задаем дату открытия счета*/
        to_date (p.DATE_OPEN) BETWEEN to_date (v_date) AND to_date (v_date2)
         /*Задаем точку*/
      AND p.IOTDNUM = v_iotdnum



Ожидаемый выход: табличка в EXEL после выполнения вызова ХП.

Сейчас выход:
Код: plsql
1.
DBMS_OUTPUT.put_line(in_vivad.S4ET||' '||in_vivad.DATE_OPEN||' '||in_vivad.DATE_PROVODKI);




Сир,
HOWTO :: Как правильно задавать вопросы
используйте Тэги, читать код без них неудобно
Ответьте, прежде всего себе:
1) когда вы запускаете PL/SQL код, где он выполняется, и соотвественно, если пользоваться пакетом UTL_FILE , где физически файл будет создаваться?
2) Где выполняется форма которую вы запускаете/планируете запускать
3) как вы будете вызывать ваши процедуру primer, и куда полетит ее вывод в этом случае и как Вы будете этот вывод обрабатывать
4) Что такое sqlplus и что за команда
Код: plsql
1.
set serveroutput on



5) Какие грабли Вы можете поймать, если будете использовать:
Код: plsql
1.
2.
3.
4.
begin primer ('01.01.2014', '01.02.2014', 1);end;
...
to_date (p.DATE_OPEN) BETWEEN to_date (v_date) AND to_date (v_date2)
...




Правильно поставленный вопрос - половина ответа
...
Рейтинг: 0 / 0
17.10.2016, 13:52
    #39328181
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просьба помочь в решении задачки.. Oracle PL\sql
Джонни_ИнглишВ дальнейшем это будет прикручиваться к операторской форме.У вас операторы носят форму с фрагментами sql-кода? И что дает этой форме замена курсорного результата на необходимость парсить тестовый вывод?
...
Рейтинг: 0 / 0
17.10.2016, 14:16
    #39328201
Просьба помочь в решении задачки.. Oracle PL\sql
Vadim Lejnin,

Без проблем, я здесь новый человек.

1) когда вы запускаете PL/SQL код - выполняется на сервере, если пользоваться пакетом UTL_FILE, где физически файл будет создаваться - файл будет создаваться на сервере.

2) Где выполняется форма которую вы запускаете/планируете запускать - форма расположена на клиентской машине.

3) как вы будете вызывать ваши процедуру primer - вызов процедуры посредством нажатия кнопки на клиентской машине.

4) Что такое sqlplus и что за команда

Код: plsql
1.
set serveroutput on

- извиняюсь это лишнее, (выдрано, не так скопировано, да криворукий)


5) Какие грабли Вы можете поймать, если будете использовать:

Код: plsql
1.
2.
3.
4.
begin primer ('01.01.2014', '01.02.2014', 1);end;
...
to_date (p.DATE_OPEN) BETWEEN to_date (v_date) AND to_date (v_date2)
...


- о граблях подробней..
...
Рейтинг: 0 / 0
17.10.2016, 14:31
    #39328214
tru55
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просьба помочь в решении задачки.. Oracle PL\sql
Джонни_Инглиш - о граблях подробней..
NLS-настройки сессии
...
Рейтинг: 0 / 0
17.10.2016, 14:33
    #39328215
Просьба помочь в решении задачки.. Oracle PL\sql
tru55,

Ок, понятно, спс.
...
Рейтинг: 0 / 0
17.10.2016, 14:37
    #39328223
Просьба помочь в решении задачки.. Oracle PL\sql
tru55,

Код: plsql
1.
to_date (p.DATE_OPEN) BETWEEN to_date (v_date, 'DD.MM.YYYY HH24:MI:SS') AND to_date (v_date2, 'DD.MM.YYYY HH24:MI:SS')


Наверно поправил, но суть не в этом.
...
Рейтинг: 0 / 0
17.10.2016, 15:13
    #39328276
Vadim Lejnin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просьба помочь в решении задачки.. Oracle PL\sql
Джонни_ИнглишVadim Lejnin,
...

2) Где выполняется форма которую вы запускаете/планируете запускать - форма расположена на клиентской машине.

3) как вы будете вызывать ваши процедуру primer - вызов процедуры посредством нажатия кнопки на клиентской машине.
...


То есть Вы будете использовать UTL_FILE (ссылку я Вам уже давал)

Примеров в inet куча (даже в той ссылке на справочник) , только Вам нужно разобраться с привилегиями на объект "oracle directory" и как Вы будете чистить старые файлы

В этом случае dbms_output - не нужен (разве только на момент отладки), формируете строку и пишите в файл. Останется разобраться как доставить этот файл потребителю.

Ответ зависит от используемого инструментария для создания форм, но это уже совсем другая история
...
Рейтинг: 0 / 0
17.10.2016, 15:21
    #39328287
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просьба помочь в решении задачки.. Oracle PL\sql
Vadim LejninВ этом случае dbms_output - не нуженdbms_output ему и без utl_file был не нужен, а utl_file и подавно.
...
Рейтинг: 0 / 0
17.10.2016, 15:24
    #39328290
Просьба помочь в решении задачки.. Oracle PL\sql
Vadim Lejnin,

Не могли бы Вы помочь с формированием заголовков колонок , так для наглядности?
...
Рейтинг: 0 / 0
17.10.2016, 15:26
    #39328293
Просьба помочь в решении задачки.. Oracle PL\sql
-2-,

Объяснитесь товарисчь, как правильно заметил Vadim Lejnin, dbms_output - нужен был только на момент отладки.
...
Рейтинг: 0 / 0
17.10.2016, 15:33
    #39328303
Vadim Lejnin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просьба помочь в решении задачки.. Oracle PL\sql
Джонни_ИнглишVadim Lejnin,

Не могли бы Вы помочь с формированием заголовков колонок , так для наглядности?
RPAD, LPAD, TO_CHAR(x,format), format models
...
Рейтинг: 0 / 0
17.10.2016, 15:35
    #39328305
Vadim Lejnin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просьба помочь в решении задачки.. Oracle PL\sql
Vadim LejninДжонни_ИнглишVadim Lejnin,

Не могли бы Вы помочь с формированием заголовков колонок , так для наглядности?
RPAD, LPAD, TO_CHAR(x,format), format models
У Вас же csv
Какие проблемы?
...
Рейтинг: 0 / 0
17.10.2016, 15:41
    #39328313
Просьба помочь в решении задачки.. Oracle PL\sql
Vadim Lejnin,

Если Вас не затруднит, прошу пример..
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Просьба помочь в решении задачки.. Oracle PL\sql / 20 сообщений из 20, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]