powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Пример сторед процедуры по добавлению новых записей в таблицу
9 сообщений из 9, страница 1 из 1
Пример сторед процедуры по добавлению новых записей в таблицу
    #39554252
wewewew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллеги, нужны примеры корректных сторед процедур по добавлению новых записей.
Слишком много вопросов возникло при написании ее с нуля.
...
Рейтинг: 0 / 0
Пример сторед процедуры по добавлению новых записей в таблицу
    #39554262
Lonepsycho
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wewewew,

гоголевский серш и первая ссылка в поиске

что именно вам не ясно?
...
Рейтинг: 0 / 0
Пример сторед процедуры по добавлению новых записей в таблицу
    #39554292
Фотография мегамозг
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wewewew, на всякий вар-т с функцией из учебника

Код: plsql
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.
CREATE OR REPLACE FUNCTION add_event( title text, starts timestamp,
  ends timestamp, venue text, postal varchar(9), country char(2) ) 
RETURNS boolean AS $$
DECLARE
  did_insert boolean := false;
  found_count integer;
  the_venue_id integer;
BEGIN
  SELECT venue_id INTO the_venue_id
  FROM venues v
  WHERE v.postal_code=postal AND v.country_code=country AND v.name ILIKE venue
  LIMIT 1;
  
  IF the_venue_id IS NULL THEN
    INSERT INTO venues (name, postal_code, country_code)
    VALUES (venue, postal, country)
    RETURNING venue_id INTO the_venue_id;
    
    did_insert := true;
  END IF;
	
  -- Note: not an “error”, as in some programming languages
  RAISE NOTICE 'Venue found %', the_venue_id;

  INSERT INTO events (title, starts, ends, venue_id)
  VALUES (title, starts, ends, the_venue_id);

  RETURN did_insert;
END;
$$ LANGUAGE plpgsql;
...
Рейтинг: 0 / 0
Пример сторед процедуры по добавлению новых записей в таблицу
    #39554675
wewewew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мегамозг,
Благодарю!
Интересовала лучшая практика по получении id новой записи при вставки
Решил использовать RETURNING * INTO STRICT target.

Ваш пример тоже помог. Но я до конца не понял как обрабатывать необязательные параметры при поиске.
Например в процедуру приходят три параметра: Фамилия, Имя, Отчество, обязательным может быть любой их них.
Вобщем нужен аналог кода на MSSQL:

SELECT @SelectString = 'SELECT ID ="BILLINGHOUSE"."HOUSEID","BILLINGHOUSE"."HOUSEID", "BILLINGHOUSE"."LOCATIONID", "BILLINGHOUSE"."EXTERNALID",
"HOUSENAME", "BILLINGHOUSE"."LASTUPDATE", "BILLINGHOUSE"."CREATED",
"BILLINGHOUSE"."ISACTIVE" ,
"LOCATION"."STATE", STATE_CODE_INFO.SHORTDESC AS STATE_DESC,
"LOCATION"."COUNTRY", COUNTRY_CODE_INFO.SHORTDESC AS COUNTRY_DESC,
"LOCATION"."ZIP", "LOCATION"."CITY",
"LOCATION"."ADDR1", "LOCATION"."ADDR2",
"LOCATION"."LASTUPDATE" AS LOCATIONLASTUPDATE
FROM "BILLINGHOUSE" INNER JOIN "LOCATION"
ON "LOCATION"."LOCATIONID" = "BILLINGHOUSE"."LOCATIONID"
LEFT JOIN "SYSTEMCODE" COUNTRY_CODE_INFO
ON COUNTRY_CODE_INFO."SYSCODEID" = "LOCATION"."COUNTRY"
LEFT JOIN "SYSTEMCODE" STATE_CODE_INFO
ON STATE_CODE_INFO."SYSCODEID" = "LOCATION"."STATE" ' +
' WHERE "HOUSENAME" LIKE' +DBO.GetStringForLike(RTRIM(@HouseName),0) +
' AND "CITY" LIKE('+DBO.GetStringForLike(RTRIM(@City),0) +') AND "ZIP" LIKE('+DBO.GetStringForLike(RTRIM(@Zip),0) +') '

IF @StateId <> 0
SELECT @SelectString = @SelectString + ' AND "LOCATION"."STATE"=' + RTRIM(LTRIM(STR(@StateId,10,0))) + ' '

IF @CountryId <> 0
SELECT @SelectString = @SelectString + ' AND "LOCATION"."COUNTRY"=' + RTRIM(LTRIM(STR(@CountryId,10,0))) + ' '
IF @ExternalId <> ''
SELECT @SelectString = @SelectString + ' AND "BILLINGHOUSE"."EXTERNALID" LIKE ('+DBO.GetStringForLike(RTRIM(LTRIM(@ExternalId)),0)+') '
--SELECT @SelectString = @SelectString +' AND TOP 3'
EXECUTE(@SelectString)
...
Рейтинг: 0 / 0
Пример сторед процедуры по добавлению новых записей в таблицу
    #39554749
fte
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wewewewSELECT @SelectString = 'SELECT ID ="BILLINGHOUSE"."HOUSEID","BILLINGHOUSE"."HOUSEID", "BILLINGHOUSE"."LOCATIONID", "BILLINGHOUSE"."EXTERNALID",
"HOUSENAME", "BILLINGHOUSE"."LASTUPDATE", "BILLINGHOUSE"."CREATED",
"BILLINGHOUSE"."ISACTIVE" ,
"LOCATION"."STATE", STATE_CODE_INFO.SHORTDESC AS STATE_DESC,
"LOCATION"."COUNTRY", COUNTRY_CODE_INFO.SHORTDESC AS COUNTRY_DESC,
"LOCATION"."ZIP", "LOCATION"."CITY",
"LOCATION"."ADDR1", "LOCATION"."ADDR2",
"LOCATION"."LASTUPDATE" AS LOCATIONLASTUPDATE
FROM "BILLINGHOUSE" INNER JOIN "LOCATION"
ON "LOCATION"."LOCATIONID" = "BILLINGHOUSE"."LOCATIONID"
LEFT JOIN "SYSTEMCODE" COUNTRY_CODE_INFO
ON COUNTRY_CODE_INFO."SYSCODEID" = "LOCATION"."COUNTRY"
LEFT JOIN "SYSTEMCODE" STATE_CODE_INFO
ON STATE_CODE_INFO."SYSCODEID" = "LOCATION"."STATE" ' +
' WHERE "HOUSENAME" LIKE' +DBO.GetStringForLike(RTRIM(@HouseName),0) +
' AND "CITY" LIKE('+DBO.GetStringForLike(RTRIM(@City),0) +') AND "ZIP" LIKE('+DBO.GetStringForLike(RTRIM(@Zip),0) +') '

IF @StateId <> 0
SELECT @SelectString = @SelectString + ' AND "LOCATION"."STATE"=' + RTRIM(LTRIM(STR(@StateId,10,0))) + ' '

IF @CountryId <> 0
SELECT @SelectString = @SelectString + ' AND "LOCATION"."COUNTRY"=' + RTRIM(LTRIM(STR(@CountryId,10,0))) + ' '
IF @ExternalId <> ''
SELECT @SelectString = @SelectString + ' AND "BILLINGHOUSE"."EXTERNALID" LIKE ('+DBO.GetStringForLike(RTRIM(LTRIM(@ExternalId)),0)+') '
--SELECT @SelectString = @SelectString +' AND TOP 3'
EXECUTE(@SelectString)

wewewew,
Ну и как в этой .... разбираться ?
Нормально отформатировать, никак...???
...
Рейтинг: 0 / 0
Пример сторед процедуры по добавлению новых записей в таблицу
    #39554756
fte
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ftewewewewSELECT @SelectString = 'SELECT ID ="BILLINGHOUSE"."HOUSEID","BILLINGHOUSE"."HOUSEID", "BILLINGHOUSE"."LOCATIONID", "BILLINGHOUSE"."EXTERNALID",
"HOUSENAME", "BILLINGHOUSE"."LASTUPDATE", "BILLINGHOUSE"."CREATED",
"BILLINGHOUSE"."ISACTIVE" ,
"LOCATION"."STATE", STATE_CODE_INFO.SHORTDESC AS STATE_DESC,
"LOCATION"."COUNTRY", COUNTRY_CODE_INFO.SHORTDESC AS COUNTRY_DESC,
"LOCATION"."ZIP", "LOCATION"."CITY",
"LOCATION"."ADDR1", "LOCATION"."ADDR2",
"LOCATION"."LASTUPDATE" AS LOCATIONLASTUPDATE
FROM "BILLINGHOUSE" INNER JOIN "LOCATION"
ON "LOCATION"."LOCATIONID" = "BILLINGHOUSE"."LOCATIONID"
LEFT JOIN "SYSTEMCODE" COUNTRY_CODE_INFO
ON COUNTRY_CODE_INFO."SYSCODEID" = "LOCATION"."COUNTRY"
LEFT JOIN "SYSTEMCODE" STATE_CODE_INFO
ON STATE_CODE_INFO."SYSCODEID" = "LOCATION"."STATE" ' +
' WHERE "HOUSENAME" LIKE' +DBO.GetStringForLike(RTRIM(@HouseName),0) +
' AND "CITY" LIKE('+DBO.GetStringForLike(RTRIM(@City),0) +') AND "ZIP" LIKE('+DBO.GetStringForLike(RTRIM(@Zip),0) +') '

IF @StateId <> 0
SELECT @SelectString = @SelectString + ' AND "LOCATION"."STATE"=' + RTRIM(LTRIM(STR(@StateId,10,0))) + ' '

IF @CountryId <> 0
SELECT @SelectString = @SelectString + ' AND "LOCATION"."COUNTRY"=' + RTRIM(LTRIM(STR(@CountryId,10,0))) + ' '
IF @ExternalId <> ''
SELECT @SelectString = @SelectString + ' AND "BILLINGHOUSE"."EXTERNALID" LIKE ('+DBO.GetStringForLike(RTRIM(LTRIM(@ExternalId)),0)+') '
--SELECT @SelectString = @SelectString +' AND TOP 3'
EXECUTE(@SelectString)

wewewew,
Ну и как в этой .... разбираться ?
Нормально отформатировать, никак...???

И с чего вы решили, что если Вы покажете нам фрагмент кода, мы за Вас что-то сможем додумать!!! Телепаты - "Аууууу...", а потом будете обижаться, что никто Вам не ответил....
Прежде чем, что-то написать в форум, хотя-бы ознакомьтесь с правилами хорошего тона Тынц
Нужен скрипт процедуры MSSQL полностью .
...
Рейтинг: 0 / 0
Пример сторед процедуры по добавлению новых записей в таблицу
    #39555123
wewewew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ftefteпропущено...
wewewew,
Ну и как в этой .... разбираться ?
Нормально отформатировать, никак...???

И с чего вы решили, что если Вы покажете нам фрагмент кода, мы за Вас что-то сможем додумать!!! Телепаты - "Аууууу...", а потом будете обижаться, что никто Вам не ответил....
Прежде чем, что-то написать в форум, хотя-бы ознакомьтесь с правилами хорошего тона Тынц
Нужен скрипт процедуры MSSQL полностью .

Спасибо за желание помочь!
Ниже полный пример сторед процедуры MSSql.
Вопрос простой, как формировать строку запроса, чтобы в нем использовались только не пустые критерии поиска(как их обрабатывать?). В процедуре ниже это решается обычным форматированием строки. Как это лучше сделать в постгре!

CREATE PROCEDURE DBO.BillingHouse_ListBySearch
(
@UserId SystemCounter,
@ActionId SystemCounter,
@HouseName varchar(30) = '',
@ExternalId varchar(12) = '',
@CountryId SystemCounter = 0,
@StateId SystemCounter = 0,
@City varchar(30) = '',
@Zip varchar(9) = '',
@ResultRowCount integer = -1
)
As

DECLARE @SelectString varchar(4000)
SET ROWCOUNT 50
SELECT @SelectString = 'SELECT ID ="BILLINGHOUSE"."HOUSEID","BILLINGHOUSE"."HOUSEID", "BILLINGHOUSE"."LOCATIONID", "BILLINGHOUSE"."EXTERNALID",
"HOUSENAME", "BILLINGHOUSE"."LASTUPDATE", "BILLINGHOUSE"."CREATED",
"BILLINGHOUSE"."ISACTIVE" ,
"LOCATION"."STATE", STATE_CODE_INFO.SHORTDESC AS STATE_DESC,
"LOCATION"."COUNTRY", COUNTRY_CODE_INFO.SHORTDESC AS COUNTRY_DESC,
"LOCATION"."ZIP", "LOCATION"."CITY",
"LOCATION"."ADDR1", "LOCATION"."ADDR2",
"LOCATION"."LASTUPDATE" AS LOCATIONLASTUPDATE
FROM "BILLINGHOUSE" INNER JOIN "LOCATION"
ON "LOCATION"."LOCATIONID" = "BILLINGHOUSE"."LOCATIONID"
LEFT JOIN "SYSTEMCODE" COUNTRY_CODE_INFO
ON COUNTRY_CODE_INFO."SYSCODEID" = "LOCATION"."COUNTRY"
LEFT JOIN "SYSTEMCODE" STATE_CODE_INFO
ON STATE_CODE_INFO."SYSCODEID" = "LOCATION"."STATE" ' +
' WHERE "HOUSENAME" LIKE' +DBO.GetStringForLike(RTRIM(@HouseName),0) +
' AND "CITY" LIKE('+DBO.GetStringForLike(RTRIM(@City),0) +') AND "ZIP" LIKE('+DBO.GetStringForLike(RTRIM(@Zip),0) +') '

IF @StateId <> 0
SELECT @SelectString = @SelectString + ' AND "LOCATION"."STATE"=' + RTRIM(LTRIM(STR(@StateId,10,0))) + ' '

IF @CountryId <> 0
SELECT @SelectString = @SelectString + ' AND "LOCATION"."COUNTRY"=' + RTRIM(LTRIM(STR(@CountryId,10,0))) + ' '
IF @ExternalId <> ''
SELECT @SelectString = @SelectString + ' AND "BILLINGHOUSE"."EXTERNALID" LIKE ('+DBO.GetStringForLike(RTRIM(LTRIM(@ExternalId)),0)+') '
--SELECT @SelectString = @SelectString +' AND TOP 3'
EXECUTE(@SelectString)
SET ROWCOUNT 0
RETURN @@ERROR

GO
...
Рейтинг: 0 / 0
Пример сторед процедуры по добавлению новых записей в таблицу
    #39555347
fte
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wewewew,

Для начала Вам сюда
в процессе дойдёте до того чего хотите тыц
...
Рейтинг: 0 / 0
Пример сторед процедуры по добавлению новых записей в таблицу
    #39555368
wewewew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ftewewewew,

Для начала Вам сюда
в процессе дойдёте до того чего хотите тыц
В точку! Спасибо!
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Пример сторед процедуры по добавлению новых записей в таблицу
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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