powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / функция, которая считает количество строк в таблице.
14 сообщений из 14, страница 1 из 1
функция, которая считает количество строк в таблице.
    #39943434
ainyrakhmetova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я написала функции, но они считают количество сотрудников в зависимости от переданных данных,

а как сделать так чтобы параметр функции принимал имя любой таблицы , в которой нужно считать количество строк.

declare
function cnt(dep_name in varchar2) return number is
cunt number(10);
begin
select count(*) into cunt
from (select employee_id from employees e,departments d
where e.department_id=d.department_id
and d.department_name=dep_name);
return cunt;
end;

function cnt (job_name in varchar2) return number is
cunt number(10);
begin
select count(*) into cunt
from (select employee_id from employees e,jobs j
where e.job_id=j.job_id
and job_title=job_name);
return cunt;
end;
...
Рейтинг: 0 / 0
функция, которая считает количество строк в таблице.
    #39943453
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изучайте динамический SQL.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
declare
  v_sql varchar2(10000) := '';
  v_table varchar2 (1000) := 'SMCARD';
  v_id_column varchar2 (1000) := 'ID';
  v_id_value number := 999;
  v_cnt number;
begin
    v_sql := 'select count(1) from ' || v_table || ' where ' || v_id_column || ' = ' || v_id_value;
    execute immediate v_sql into v_cnt; -- далее изучите кляузу using
    dbms_output.put_line('cnt: '||v_cnt);
exception when others then    
    dbms_output.put_line('v_sql: '||v_sql);
    dbms_output.put_line(sqlerrm);
end;

...
Рейтинг: 0 / 0
функция, которая считает количество строк в таблице.
    #39943455
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ainyrakhmetova,

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
  1  declare
  2   v_tmp number;
  3   function  f_cnt (p_tab_name varchar2) return number is
  4     v_cc number;
  5   begin
  6     execute immediate 'select count(*) from '||p_tab_name into v_cc;
  7     dbms_output.put_line(p_tab_name||'  '||v_cc);
  8     return v_cc;
  9     --exception
 10   end;
 11  begin
 12   v_tmp:=f_cnt('EMP');
 13   v_tmp:=f_cnt('dept');
 14* end;
SQL> /
EMP  14
dept  4

PL/SQL procedure successfully completed.



ps
+
xml
dbms_sql
open for
в свежих версиях ф-ции макросы (или как там их звать)
еще что-то

.....
stax
...
Рейтинг: 0 / 0
функция, которая считает количество строк в таблице.
    #39943457
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dmdmdm

- далее изучите кляузу using

в свете "имя любой таблицы", на что посоветуете обратить внимание при изучениие кляузы using?

....
stax
...
Рейтинг: 0 / 0
функция, которая считает количество строк в таблице.
    #39943503
brzl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
cunt
...
Рейтинг: 0 / 0
функция, которая считает количество строк в таблице.
    #39943510
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ainyrakhmetova
имя любой таблицы
"Любой" в любом случае не получится.
...
Рейтинг: 0 / 0
функция, которая считает количество строк в таблице.
    #39943923
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax

в свете "имя любой таблицы", на что посоветуете обратить внимание при изучениие кляузы using?


На ошибки 904, 1031, можно для расширения кругозора 4044 или 1843.
Пожалуй, студенту хватит.
...
Рейтинг: 0 / 0
функция, которая считает количество строк в таблице.
    #39944004
arCHi_1887
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Learn Oracle CUNT() Function By Practical Examples
...
Рейтинг: 0 / 0
функция, которая считает количество строк в таблице.
    #39944238
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax
dmdmdm

- далее изучите кляузу using

в свете "имя любой таблицы", на что посоветуете обратить внимание

SQL MACRO?
...
Рейтинг: 0 / 0
функция, которая считает количество строк в таблице.
    #39944243
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous
Stax
пропущено...

в свете "имя любой таблицы", на что посоветуете обратить внимание

SQL MACRO?
sql_macro не позволяет выполнять динамический, зависимый от данных, sql. Оно лишь представляет значение литерала на момент парса в виде "статического" sql.
...
Рейтинг: 0 / 0
функция, которая считает количество строк в таблице.
    #39944271
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-2-
andrey_anonymous
пропущено...

SQL MACRO?
sql_macro не позволяет выполнять динамический, зависимый от данных, sql. Оно лишь представляет значение литерала на момент парса в виде "статического" sql.


имхо, посчитает

Код: plsql
1.
2.
3.
4.
5.
6.
CREATE FUNCTION f_macro(p_t VARCHAR2) RETURN VARCHAR2 SQL_MACRO IS
BEGIN
   RETURN '(SELECT count(*) cc from '||p_t||')';
END;
exec :v_t:='EMP';
select * from f_macro(:v_t);



....
stax
...
Рейтинг: 0 / 0
функция, которая считает количество строк в таблице.
    #39944273
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous
Stax
пропущено...

в свете "имя любой таблицы", на что посоветуете обратить внимание

SQL MACRO?

не понимаю как using поможет для передачи имени таблицы

.....
stax
...
Рейтинг: 0 / 0
функция, которая считает количество строк в таблице.
    #39944341
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dmdmdm
Изучайте динамический SQL.


А зачем, в свете "имя любой таблицы"?

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
create or replace
  function get_row_count(
                         p_owner varchar2,
                         p_object varchar2
                        )
    return number
    is
        v_cnt number;
    begin
        select  *
          into  v_cnt
          from  xmltable(
                         '.'
                         passing dbms_xmlgen.getxmltype('select count(*) cnt from ' || p_owner || '.' || p_object)
                         columns
                           cnt number path '/ROWSET/ROW/CNT'
                        );
        return v_cnt;
end;
/




Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
select  table_name,
        get_row_count('SCOTT',table_name) row_count
  from  user_tables
  where table_name in (
                       'EMP',
                       'DEPT'
                      )
/

TABLE_NAME       ROW_COUNT
--------------- ----------
DEPT                     4
EMP                     14

SQL>



SY.
...
Рейтинг: 0 / 0
функция, которая считает количество строк в таблице.
    #39944461
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SY
dmdmdm
Изучайте динамический SQL.
А зачем, в свете "имя любой таблицы"?
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
        select  *
          into  v_cnt
          from  xmltable(
                         '.'
                         passing dbms_xmlgen.getxmltype('select count(*) cnt from ' || p_owner || '.' || p_object)
                         columns
                           cnt number path '/ROWSET/ROW/CNT'
                        );

А затем, что без без нужды притянутых за уши фич всё элементарно и короче:
Код: plsql
1.
execute immediate 'select count(*) cnt from ' || p_owner || '.' || p_object into v_cnt;


P.S. Соломон, если честно, то несмешно так, что над тобой плакать хочется. Или тебя ламеры хакнули?
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / функция, которая считает количество строк в таблице.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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