Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Создание процедуры в PLSQL  [new]
siemenscx65
Member

Откуда: Киев
Сообщений: 30
Добрый день, коллеги.
помогите вот с каким вопросом:
есть таблица (выборка)
филиал работник телефон
1 11 111
1 12 112
2 22 122
2 23 123
3 32 132
3 33 133

хочу создать файлы с разбивкой по филиалам, т.е.
1(филиал).txt(csv) не важно
2(филиал).txt(csv) не важно
а внутри каждого типа
петровский филиал
работник телефон
11 111
и т.д.
с помощью курсоров и цикла добился создания одного файла, а как добиться создания файла на основании № филиала, т.е. при изменении переменной (филиал) создавать новый файл.
23 июл 13, 16:46    [14605436]     Ответить | Цитировать Сообщить модератору
 Re: Создание процедуры в PLSQL  [new]
Максим Н
Member

Откуда: Екатеринодар
Сообщений: 1439
siemenscx65,

покажите код, как делаете
23 июл 13, 17:26    [14605717]     Ответить | Цитировать Сообщить модератору
 Re: Создание процедуры в PLSQL  [new]
stax..
Guest
siemenscx65, речь об sql*plus?

.....
stax
23 июл 13, 17:51    [14605914]     Ответить | Цитировать Сообщить модератору
 Re: Создание процедуры в PLSQL  [new]
siemenscx65
Member

Откуда: Киев
Сообщений: 30
declare
cursor asd is select ' Акт' fff from dual;
cursor br is select b.branch_name br from branches where bt.exp_dat >= sysdate - 2;
--go--
cursor go_ is select b.branch_name || b.name || b.phone kkk from izd_branches b where b.exp_dat >= sysdate -2 ;

v_br br%rowtype;
v_go go_%rowtype;
v_fn asd%rowtype;
i number :='2 ' ;

begin
DBMS_OUTPUT.enable(999999);

OPEN go_;
open br;
open asd;

FETCH asd INTO v_fn;
DBMS_OUTPUT.put_line(' '||to_char(v_fn.fff)||' ');
FETCH br INTO v_br;
DBMS_OUTPUT.put_line(to_char(v_br.br));
FETCH go_ INTO v_go;
--if ccc.rrr=qwe.kkk then
WHILE (go_%FOUND) LOOP
--- loop
--case when ccc = '000' then
DBMS_OUTPUT.put_line(TO_CHAR(v_go.kkk ));
i:=i+1;
FETCH go_ INTO v_go;
end loop;
close br;
CLOSE go_;
close asd;
end;
23 июл 13, 18:16    [14606068]     Ответить | Цитировать Сообщить модератору
 Re: Создание процедуры в PLSQL  [new]
siemenscx65
Member

Откуда: Киев
Сообщений: 30
stax..,
plsql
23 июл 13, 18:16    [14606071]     Ответить | Цитировать Сообщить модератору
 Re: Создание процедуры в PLSQL  [new]
siemenscx65
Member

Откуда: Киев
Сообщений: 30
вот хочу что бы курсор go_ зацикливался при каждом изменении курсора br.
23 июл 13, 18:24    [14606104]     Ответить | Цитировать Сообщить модератору
 Re: Создание процедуры в PLSQL  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18370
siemenscx65
с помощью курсоров и цикла добился создания одного файла

siemenscx65
..
DBMS_OUTPUT.put_line('          '||to_char(v_fn.fff)||'            ');
...
DBMS_OUTPUT.put_line(TO_CHAR(v_go.kkk ));
...

Чет со зрением - в упор не вижу "создания одного файла"
23 июл 13, 18:24    [14606106]     Ответить | Цитировать Сообщить модератору
 Re: Создание процедуры в PLSQL  [new]
siemenscx65
Member

Откуда: Киев
Сообщений: 30
оговорился,
результат это вывод данных, я их потом копирую в файл.
дописать на создание файла не проблема, добиться бы желаемого в выводах данных.
23 июл 13, 18:32    [14606145]     Ответить | Цитировать Сообщить модератору
 Re: Создание процедуры в PLSQL  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18370
siemenscx65
результат это вывод данных, я их потом копирую в файл.

Жестко играете, мсье :) :) :)
Может, начать с азов - какого-нибудь developer guide fundamentals?

...хм ..."хочу чтобы курсор зацикливался" -что бы это значило?...
23 июл 13, 18:39    [14606187]     Ответить | Цитировать Сообщить модератору
 Re: Создание процедуры в PLSQL  [new]
siemenscx65
Member

Откуда: Киев
Сообщений: 30
Может и почитать :)
просто есть то что я показал, но не совсем подходит для результата :)
23 июл 13, 19:01    [14606315]     Ответить | Цитировать Сообщить модератору
 Re: Создание процедуры в PLSQL  [new]
stax..
Guest
siemenscx65
вот хочу что бы курсор go_ зацикливался при каждом изменении курсора br.

SQL> begin
  2   for d in (select * from dept) loop
  3     dbms_output.put_line(d.dname);
  4     for e in (select * from emp e where e.deptno=d.deptno) loop
  5       dbms_output.put_line('  '||e.empno||' '||e.ename);
  6     end loop;
  7   end loop;
  8  end;
  9  /
ACCOUNTING
  7782 CLARK
  7839 KING
  7934 MILLER
RESEARCH
  7369 SMITH
  7566 JONES
  7788 SCOTT
  7876 ADAMS
  7902 FORD
SALES
  7499 ALLEN
  7521 WARD
  7654 MARTIN
  7698 BLAKE
  7844 TURNER
  7900 JAMES
OPERATIONS

PL/SQL procedure successfully completed.

  1  declare
  2   cursor c1 is select * from dept;
  3   cursor c2(p_deptno number) is select * from emp e where e.deptno=p_deptno;
  4  begin
  5   for d in c1 loop
  6     dbms_output.put_line(d.dname);
  7     for e in c2(d.deptno) loop
  8       dbms_output.put_line('  '||e.empno||' '||e.ename);
  9     end loop;
 10   end loop;
 11* end;
SQL> /
ACCOUNTING
  7782 CLARK
  7839 KING
  7934 MILLER
RESEARCH
  7369 SMITH
  7566 JONES
  7788 SCOTT
  7876 ADAMS
  7902 FORD
SALES
  7499 ALLEN
  7521 WARD
  7654 MARTIN
  7698 BLAKE
  7844 TURNER
  7900 JAMES
OPERATIONS

PL/SQL procedure successfully completed.

.....
stax
23 июл 13, 19:41    [14606458]     Ответить | Цитировать Сообщить модератору
 Re: Создание процедуры в PLSQL  [new]
siemenscx65
Member

Откуда: Киев
Сообщений: 30
Спасибо за предложение.
еще один вопрос : если второй курсор имеет select из 4 таблиц то как корректно описать в DBMS_OUTPUT.put_line и как связать таблицу из первого курсора с 4 таблицами во втором курсоре?
24 июл 13, 12:16    [14609483]     Ответить | Цитировать Сообщить модератору
 Re: Создание процедуры в PLSQL  [new]
grago
Member

Откуда: Киев
Сообщений: 68
siemenscx65
Спасибо за предложение.
еще один вопрос : если второй курсор имеет select из 4 таблиц то как корректно описать в DBMS_OUTPUT.put_line...

так же как и select из одной таблицы
автор
и как связать таблицу из первого курсора с 4 таблицами во втором курсоре

1. вместо двух курсоров написать один
2. как входящий параметр 2-го курсора
24 июл 13, 13:28    [14610108]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить