Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Из MSSQL в PostgreSQL > Select результатом хранимки / 10 сообщений из 10, страница 1 из 1
04.07.2007, 13:27
    #34637767
Acubed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из MSSQL в PostgreSQL > Select результатом хранимки
Здравствуйте, подскжите пожалуста как результатом хранимой процедуры вывести вот эти селекты??? Второй день долблюсь, ничего путного не выходит.. ='(

Код: plaintext
1.
2.
3.
4.
5.
    IF get_count= 0  BEGIN
        SELECT  0  AS msg_id, 'no data' AS msg_to, '' AS msg_text,  0  AS codepage,  0  AS smsc_id 
    END ELSE BEGIN
        SELECT msg_id, msg_to, msg_text, msg_cp as codepage, smsc_id FROM tmsg_sms WHERE (get_id = var_get_id)
    END
...
Рейтинг: 0 / 0
04.07.2007, 13:34
    #34637813
st_serg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из MSSQL в PostgreSQL > Select результатом хранимки
поискать по форуму?
...
Рейтинг: 0 / 0
04.07.2007, 13:39
    #34637840
Acubed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из MSSQL в PostgreSQL > Select результатом хранимки
Искал, ни к чему хорошему не привело.. =(

Подпись: "с/п Глупко"
...
Рейтинг: 0 / 0
04.07.2007, 13:49
    #34637888
Thamerlan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из MSSQL в PostgreSQL > Select результатом хранимки
Ну про REFCURSOR'ы не буду говорить, а то меня st_serg опять отругает :)

Вот можно как-то так :

Код: plaintext
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.
33.
34.
CREATE OR REPLACE FUNCTION fnc_mysuperfunction
   (get_count    IN  INTEGER,
    var_get_id   IN  INTEGER,
    msg_id      OUT  tmsg_sms.msg_id%TYPE,
    msg_to      OUT  tmsg_sms.msg_to%TYPE,
    msg_text    OUT  tmsg_sms.msg_text%TYPE,
    codepage    OUT  tmsg_sms.msg_cp%TYPE,
    smsc_id     OUT  tmsg_sms.smsc_id%TYPE
   )
RETURNS SETOF RECORD AS
$BODY$
DECLARE
   rec_1   RECORD;
BEGIN
   IF get_count= 0  THEN
        SELECT  0  AS msg_id, 'no data' AS msg_to, '' AS msg_text,  0  AS codepage,  0  AS smsc_id
        INTO msg_id,msg_to,msg_text,codepage,smsc_id;

        RETURN NEXT;
   ELSE
        FOR rec_1 IN (SELECT msg_id, msg_to, msg_text, msg_cp as codepage, smsc_id FROM tmsg_sms WHERE (get_id = var_get_id))
        LOOP
           msg_id   := rec_1.msg_id;
           msg_to   := rec_1.msg_to;
           msg_text := rec_1.msg_text;
           codepage := rec_1.codepage;
           smsc_id  := rec_1.smsc_id;

           RETURN NEXT;
        END LOOP;
   END IF;
   RETURN;
END;
$BODY$ LANGUAGE 'plpgsql' VOLATILE;
...
Рейтинг: 0 / 0
04.07.2007, 13:50
    #34637891
st_serg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из MSSQL в PostgreSQL > Select результатом хранимки
воспользуйтесь ключевыми словами setof и refcursor
...
Рейтинг: 0 / 0
04.07.2007, 14:15
    #34638027
Acubed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из MSSQL в PostgreSQL > Select результатом хранимки
ERROR: syntax error Г— ÉÌÉ ÒÑÄÏÍ "IN" у символа 66
='(

/me бьёццо ап стену
...
Рейтинг: 0 / 0
04.07.2007, 14:50
    #34638214
Acubed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из MSSQL в PostgreSQL > Select результатом хранимки
В 7й версии IN и OUT работают?
...
Рейтинг: 0 / 0
04.07.2007, 14:52
    #34638222
Serik Akhmetov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из MSSQL в PostgreSQL > Select результатом хранимки
AcubedВ 7й версии IN и OUT работают?С 8.1
...
Рейтинг: 0 / 0
04.07.2007, 14:54
    #34638233
Acubed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из MSSQL в PostgreSQL > Select результатом хранимки
Я сделал вот такцю вот вещь:
Код: plaintext
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 FUNCTION test_get()
  RETURNS refcursor AS
'declare
	var_get_id int4;
	var_get_count int4;
	rc REFCURSOR;
begin
	update vw_sms_del set vw_msg_status = vw_msg_status + 1000000;
	insert into tesmegets default values;
	var_get_id := currval(''tesmegets_id_get_seq'');
	update tesmegets set timediff = datediff(''second'', get_date, localtimestamp) where id_get = var_get_id-1;

	update tmsg_sms set msg_status = msg_status + 10000, get_id = var_get_id 
	from vw_sms_get where tmsg_sms.msg_id = vw_sms_get.msg_id;

	GET DIAGNOSTICS var_get_count = ROW_COUNT;

	update tesmegets set get_count = var_get_count where id_get = var_get_id;

	if var_get_count = 0 then var_get_count := 0;
	end if;

	IF  var_get_count=0 then
		OPEN rc FOR SELECT 0 AS msg_id, ''no data'' AS msg_to, '''' AS msg_text, 0 AS codepage, 0 AS smsc_id;
	ELSE
		OPEN rc FOR SELECT msg_id, msg_to, msg_text, msg_cp as codepage, smsc_id FROM tmsg_sms;
	END IF;

	RETURN rc;
	

end;'
  LANGUAGE 'plpgsql' VOLATILE;

.. как сделать так, чтобы эта процедурка выводила результатом табличку?
...
Рейтинг: 0 / 0
04.07.2007, 16:00
    #34638561
LeXa NalBat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из MSSQL в PostgreSQL > Select результатом хранимки
AcubedЗдравствуйте, подскжите пожалуста как результатом хранимой процедуры вывести вот эти селекты??? Второй день долблюсь, ничего путного не выходит.. ='(
Код: plaintext
1.
2.
3.
4.
5.
    IF get_count= 0  BEGIN
        SELECT  0  AS msg_id, 'no data' AS msg_to, '' AS msg_text,  0  AS codepage,  0  AS smsc_id 
    END ELSE BEGIN
        SELECT msg_id, msg_to, msg_text, msg_cp as codepage, smsc_id FROM tmsg_sms WHERE (get_id = var_get_id)
    END
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
create table t1 (
  id integer,
  name text
);

insert into t1 values (  1 , 'foo' );
insert into t1 values (  2 , 'bar' );

create function f1(bool) returns setof t1 language 'sql' as '
  select 0 as id, '''' as name where not $1
    union
  select id, name from t1 where $1
';

select * from f1(true);
select * from f1(false);

drop function f1(bool);

drop table t1;
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Из MSSQL в PostgreSQL > Select результатом хранимки / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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