Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Чем заменить Оракловскую SQL%ROWCOUNT ? / 13 сообщений из 13, страница 1 из 1
15.02.2007, 07:31
    #34331959
alosha
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чем заменить Оракловскую SQL%ROWCOUNT ?
if (SQL%ROWCOUNT = 0) then
insert into UNIQUE_ID_VALUE(ID_VALUE)
values (pID_VALUE)
...
Рейтинг: 0 / 0
15.02.2007, 07:54
    #34331981
Бабичев Сергей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чем заменить Оракловскую SQL%ROWCOUNT ?
А что, почитать основы в доке или банально воспользоваться поиском по форуму - религия не позволяет?
ROW_COUNT , если что
...
Рейтинг: 0 / 0
15.02.2007, 08:33
    #34332032
alosha
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чем заменить Оракловскую SQL%ROWCOUNT ?
CREATE OR REPLACE FUNCTION tmp1(pid int)
RETURNS int AS '
DECLARE
myint int;
BEGIN
GET DIAGNOSTICS myint = ROW_COUNT;
RETURN;
END;'
LANGUAGE 'plpgsql';

Не пойму как ее использовать? Как она привязывется к таблице?
...
Рейтинг: 0 / 0
15.02.2007, 08:52
    #34332058
Serik Akhmetov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чем заменить Оракловскую SQL%ROWCOUNT ?
aloshaif (SQL%ROWCOUNT = 0) then
insert into UNIQUE_ID_VALUE(ID_VALUE)
values (pID_VALUE)Для начала поясните что такое "Оракловское SQL%ROWCOUNT" и что должен делать приведенный код.
...
Рейтинг: 0 / 0
15.02.2007, 08:55
    #34332064
alosha
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чем заменить Оракловскую SQL%ROWCOUNT ?
Serik Akhmetov aloshaif (SQL%ROWCOUNT = 0) then
insert into UNIQUE_ID_VALUE(ID_VALUE)
values (pID_VALUE)Для начала поясните что такое "Оракловское SQL%ROWCOUNT" и что должен делать приведенный код.


считает количесвто записей в таблице, если их ноль, то вставляет записи с помощью:
into insert into UNIQUE_ID_VALUE(ID_VALUE)
values (pID_VALUE)

Вот мне и нужно в Постгресе посчитать количество строк в таблице. Как это сделать?
...
Рейтинг: 0 / 0
15.02.2007, 09:24
    #34332126
Serik Akhmetov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чем заменить Оракловскую SQL%ROWCOUNT ?
Код: plaintext
select count(*) from ...
в PostgreSQL не очень шустрый, поэтому я бы сделал так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
CREATE OR REPLACE FUNCTION test_f()
  RETURNS text AS
$BODY$declare
    ret text;
    rec record;
begin
    ret:=  0 ;
 
    select * into rec from mytable limit  1 ;
    if found then
        ret := 'YES';
    else
        ret := 'NO';
    end if;

    return ret;
end;$BODY$
  LANGUAGE 'plpgsql' VOLATILE;
...
Рейтинг: 0 / 0
15.02.2007, 10:33
    #34332340
st_serg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чем заменить Оракловскую SQL%ROWCOUNT ?
alosha Serik Akhmetov aloshaif (SQL%ROWCOUNT = 0) then
insert into UNIQUE_ID_VALUE(ID_VALUE)
values (pID_VALUE)Для начала поясните что такое "Оракловское SQL%ROWCOUNT" и что должен делать приведенный код.


считает количесвто записей в таблице, если их ноль, то вставляет записи с помощью:
into insert into UNIQUE_ID_VALUE(ID_VALUE)
values (pID_VALUE)

Вот мне и нужно в Постгресе посчитать количество строк в таблице. Как это сделать?

sql%rowcount возвращает кол-во affected записей предыдущим запросом, но не "считает количесвто записей в таблице"
...
Рейтинг: 0 / 0
15.02.2007, 11:53
    #34332672
alosha
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чем заменить Оракловскую SQL%ROWCOUNT ?
st_serg alosha Serik Akhmetov aloshaif (SQL%ROWCOUNT = 0) then
insert into UNIQUE_ID_VALUE(ID_VALUE)
values (pID_VALUE)Для начала поясните что такое "Оракловское SQL%ROWCOUNT" и что должен делать приведенный код.


считает количесвто записей в таблице, если их ноль, то вставляет записи с помощью:
into insert into UNIQUE_ID_VALUE(ID_VALUE)
values (pID_VALUE)

Вот мне и нужно в Постгресе посчитать количество строк в таблице. Как это сделать?

sql%rowcount возвращает кол-во affected записей предыдущим запросом, но не "считает количесвто записей в таблице"


как написать это все в PostgreSQL?
...
Рейтинг: 0 / 0
15.02.2007, 12:29
    #34332852
alosha
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чем заменить Оракловскую SQL%ROWCOUNT ?
st_serg alosha Serik Akhmetov aloshaif (SQL%ROWCOUNT = 0) then
insert into UNIQUE_ID_VALUE(ID_VALUE)
values (pID_VALUE)Для начала поясните что такое "Оракловское SQL%ROWCOUNT" и что должен делать приведенный код.


считает количесвто записей в таблице, если их ноль, то вставляет записи с помощью:
into insert into UNIQUE_ID_VALUE(ID_VALUE)
values (pID_VALUE)

Вот мне и нужно в Постгресе посчитать количество строк в таблице. Как это сделать?

sql%rowcount возвращает кол-во affected записей предыдущим запросом, но не "считает количесвто записей в таблице"

Как это написать в PostgreSQL? Есть ли возможность?
...
Рейтинг: 0 / 0
15.02.2007, 12:33
    #34332883
Бабичев Сергей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чем заменить Оракловскую SQL%ROWCOUNT ?
aloshaКак это написать в PostgreSQL? Есть ли возможность?Ты хоть по ссылке-то, приведенной мной, ходил? Хоть пару-тройку топиков по ней прочитал?
...
Рейтинг: 0 / 0
15.02.2007, 12:38
    #34332903
alosha
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чем заменить Оракловскую SQL%ROWCOUNT ?
Бабичев Сергей aloshaКак это написать в PostgreSQL? Есть ли возможность?Ты хоть по ссылке-то, приведенной мной, ходил? Хоть пару-тройку топиков по ней прочитал?

CREATE OR REPLACE FUNCTION tmp1(pid int)
RETURNS int AS '
DECLARE
myint int;
BEGIN
GET DIAGNOSTICS myint = ROW_COUNT;
RETURN;
END;'
LANGUAGE 'plpgsql';

Не пойму как ее использовать? Как она привязывется к таблице?
...
Рейтинг: 0 / 0
15.02.2007, 14:49
    #34333576
alosha
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чем заменить Оракловскую SQL%ROWCOUNT ?
Бабичев Сергей aloshaКак это написать в PostgreSQL? Есть ли возможность?Ты хоть по ссылке-то, приведенной мной, ходил? Хоть пару-тройку топиков по ней прочитал?

А что не работает?

CREATE OR REPLACE FUNCTION tmp11(pvalue int)
RETURNS int AS '
DECLARE
numrows int;
BEGIN
select id, name, salary
from employee
where value = pvalue;
GET DIAGNOSTICS numrows := ROW_COUNT;
RETURN numrows;
END;'
LANGUAGE 'plpgsql';
...
Рейтинг: 0 / 0
15.02.2007, 15:12
    #34333705
st_serg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чем заменить Оракловскую SQL%ROWCOUNT ?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
postgres=# select count( 1 ) from t1;
 count
-------
      4 
( 1  запись)

postgres=# select count( 1 ) from t2;
 count
-------
      2 
( 1  запись)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
create or replace function f1() returns void
as $$
declare
   i int;
begin
   select f from t1;
   GET DIAGNOSTICS i = ROW_COUNT;
   raise notice 't1: rows affected %', i;
   update t2 set f = f;
   GET DIAGNOSTICS i = ROW_COUNT;
   raise notice 't2: rows affected %', i;
end;
$$ language plpgsql

Код: plaintext
1.
2.
3.
4.
postgres=# select f1();
ERROR:  query has no destination for result data
ПОДСКАЗКА:  If you want to discard the results of a SELECT, use PERFORM instead.
КОНТЕКСТ:  PL/pgSQL function "f1" line  4  at SQL statement

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
create or replace function f1() returns void
as $$
declare
   i int;
begin
   perform f from t1;
   GET DIAGNOSTICS i = ROW_COUNT;
   raise notice 't1: rows affected %', i;
   update t2 set f = f;
   GET DIAGNOSTICS i = ROW_COUNT;
   raise notice 't2: rows affected %', i;
end;
$$ language plpgsql

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
postgres=# select f1();
NOTICE:  t1: rows affected  4 
NOTICE:  t2: rows affected  2 
 f1
----

( 1  запись)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
create or replace function f1() returns void
as $$
declare
   i int;
begin
   select f into i from t1;
   GET DIAGNOSTICS i = ROW_COUNT;
   raise notice 't1: rows affected %', i;
   update t2 set f = f;
   GET DIAGNOSTICS i = ROW_COUNT;
   raise notice 't2: rows affected %', i;
end;
$$ language plpgsql

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
postgres=# select f1();
NOTICE:  t1: rows affected  1 
NOTICE:  t2: rows affected  2 
 f1
----

( 1  запись)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
create or replace function f1() returns void
as $$
declare
   i int;
begin
   select f into strict i from t1;
   GET DIAGNOSTICS i = ROW_COUNT;
   raise notice 't1: rows affected %', i;
   update t2 set f = f;
   GET DIAGNOSTICS i = ROW_COUNT;
   raise notice 't2: rows affected %', i;
end;
$$ language plpgsql

Код: plaintext
1.
2.
3.
postgres=# select f1();
ERROR:  query returned more than one row
КОНТЕКСТ:  PL/pgSQL function "f1" line  4  at SQL statement

вроде бы все работает
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Чем заменить Оракловскую SQL%ROWCOUNT ? / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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