powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Просьба помочь в решении задачки.. Oracle PL\sql
20 сообщений из 20, страница 1 из 1
Просьба помочь в решении задачки.. Oracle PL\sql
    #39328046
Есть ХП:

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
Просьба помочь в решении задачки.. Oracle PL\sql
    #39328048
Джонни_ИнглишЕсть ХП:
Код: 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
Просьба помочь в решении задачки.. Oracle PL\sql
    #39328055
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Джонни_Инглишнеобходимо...успехов тебе с твоим подходом к поиску решения
...
Рейтинг: 0 / 0
Просьба помочь в решении задачки.. Oracle PL\sql
    #39328059
Фотография Vadim Lejnin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Джонни_ИнглишЕсть ХП:

Код: 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
Просьба помочь в решении задачки.. Oracle PL\sql
    #39328075
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
Просьба помочь в решении задачки.. Oracle PL\sql
    #39328084
Джонни_Инглиш,

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

Нет не вариант) В дальнейшем это будет прикручиваться к операторской форме.
...
Рейтинг: 0 / 0
Просьба помочь в решении задачки.. Oracle PL\sql
    #39328153
Фотография Vadim Lejnin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Джонни_Инглиш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
Просьба помочь в решении задачки.. Oracle PL\sql
    #39328181
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Джонни_ИнглишВ дальнейшем это будет прикручиваться к операторской форме.У вас операторы носят форму с фрагментами sql-кода? И что дает этой форме замена курсорного результата на необходимость парсить тестовый вывод?
...
Рейтинг: 0 / 0
Просьба помочь в решении задачки.. Oracle PL\sql
    #39328201
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
Просьба помочь в решении задачки.. Oracle PL\sql
    #39328214
tru55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Джонни_Инглиш - о граблях подробней..
NLS-настройки сессии
...
Рейтинг: 0 / 0
Просьба помочь в решении задачки.. Oracle PL\sql
    #39328215
tru55,

Ок, понятно, спс.
...
Рейтинг: 0 / 0
Просьба помочь в решении задачки.. Oracle PL\sql
    #39328223
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
Просьба помочь в решении задачки.. Oracle PL\sql
    #39328276
Фотография Vadim Lejnin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Джонни_ИнглишVadim Lejnin,
...

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

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


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

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

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

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

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

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

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

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

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


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