powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Из MSSQL в PostgreSQL > Select результатом хранимки
10 сообщений из 10, страница 1 из 1
Из MSSQL в PostgreSQL > Select результатом хранимки
    #34637767
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
...
Рейтинг: 0 / 0
Из MSSQL в PostgreSQL > Select результатом хранимки
    #34637813
st_serg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
поискать по форуму?
...
Рейтинг: 0 / 0
Из MSSQL в PostgreSQL > Select результатом хранимки
    #34637840
Acubed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Искал, ни к чему хорошему не привело.. =(

Подпись: "с/п Глупко"
...
Рейтинг: 0 / 0
Из MSSQL в PostgreSQL > Select результатом хранимки
    #34637888
Thamerlan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну про 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
Из MSSQL в PostgreSQL > Select результатом хранимки
    #34637891
st_serg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
воспользуйтесь ключевыми словами setof и refcursor
...
Рейтинг: 0 / 0
Из MSSQL в PostgreSQL > Select результатом хранимки
    #34638027
Acubed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ERROR: syntax error Г— ÉÌÉ ÒÑÄÏÍ "IN" у символа 66
='(

/me бьёццо ап стену
...
Рейтинг: 0 / 0
Из MSSQL в PostgreSQL > Select результатом хранимки
    #34638214
Acubed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В 7й версии IN и OUT работают?
...
Рейтинг: 0 / 0
Из MSSQL в PostgreSQL > Select результатом хранимки
    #34638222
Serik Akhmetov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AcubedВ 7й версии IN и OUT работают?С 8.1
...
Рейтинг: 0 / 0
Из MSSQL в PostgreSQL > Select результатом хранимки
    #34638233
Acubed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я сделал вот такцю вот вещь:
Код: 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
Из MSSQL в PostgreSQL > Select результатом хранимки
    #34638561
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
10 сообщений из 10, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Из MSSQL в PostgreSQL > Select результатом хранимки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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