powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Процедура
82 сообщений из 82, показаны все 4 страниц
Процедура
    #38760782
lcanl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Надо апдейтить с базы ФИАС нескольких колонок, базу bd с одной колонкой. Делаю так:
Код: sql
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 proc rar22
(
@aoid varchar(2048),
@str varchar(2048),
@FORMALNAME varchar(2048),
@SHORTNAME varchar(2048),
@PARENTGUID varchar(2048)
)	
as
begin
select
@FORMALNAME = FORMALNAME,
@SHORTNAME = SHORTNAME,
@PARENTGUID = PARENTGUID
from FIAS_ADDROBJ
where AOID = @aoid

select @str = @FORMALNAME + ' '+ @SHORTNAME

while (@PARENTGUID <> '')
   select
   @FORMALNAME = FORMALNAME,
   @SHORTNAME = SHORTNAME,
   @PARENTGUID = PARENTGUID
   from FIAS_ADDROBJ
   where AOGUID = @PARENTGUID

   if @PARENTGUID <> ''
         select @str = @FORMALNAME + ' '+ @SHORTNAME
		 update rtt_net7 set fias_name= @str
		 
		

end




Выводит Выполнение команд успешно завершено. А ничего не происходит.
...
Рейтинг: 0 / 0
Процедура
    #38760789
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lcanlВыводит Выполнение команд успешно завершено. А ничего не происходит.
А что еще должно происходить при _создании_ процедуры ?
...
Рейтинг: 0 / 0
Процедура
    #38760808
lcanl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Glory, Я честно говоря в этом не силен. Точнее только познаю sql. Как я понимаю мне теперь ее запустить нужно? А где ее найти теперь?
...
Рейтинг: 0 / 0
Процедура
    #38760817
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lcanlА где ее найти теперь?
в списке процедур - где же еще

lcanlТочнее только познаю sql.
познавать надо с азов. а не сразу с прцедур
...
Рейтинг: 0 / 0
Процедура
    #38760854
lcanl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Glory, Не получилось с азов, переехал с дон обл и так получилось что подвернулась такая работа.
Процедуры нашел, выполнил. Но все равно таблица не заполнилась.
...
Рейтинг: 0 / 0
Процедура
    #38760855
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lcanlНо все равно таблица не заполнилась.
Потому что начинать надо с азов.
...
Рейтинг: 0 / 0
Процедура
    #38760863
lcanl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Glory, Помогите пожалуйста, можете натолкнуть что не так
...
Рейтинг: 0 / 0
Процедура
    #38760869
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lcanlПомогите пожалуйста, можете натолкнуть что не так
Все - не так
Начните с написания select-ов к двум и более таблицам.
...
Рейтинг: 0 / 0
Процедура
    #38760870
Фотография StarikNavy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lcanl,

>>Надо апдейтить

"апдейтит" команда update ( у вас ее нету)

>>Но все равно таблица не заполнилась.

заполняет команда insert (но у вас ее тоже нету)
...
Рейтинг: 0 / 0
Процедура
    #38760877
lcanl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
StarikNavy, update rtt_net7 set fias_name= @str это должно вроде как апдейтить
...
Рейтинг: 0 / 0
Процедура
    #38760879
lcanl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Glory,
select
@FORMALNAME = FORMALNAME,
@SHORTNAME = SHORTNAME,
@PARENTGUID = PARENTGUID

from FIAS_ADDROBJ

where AOID = @aoid

Это имеется ввиду?
...
Рейтинг: 0 / 0
Процедура
    #38760883
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lcanlЭто имеется ввиду?
Все - это все
Каждая строка вашей процедуры ужасна. И делает не то, что вы себе придумали.
...
Рейтинг: 0 / 0
Процедура
    #38760893
lcanl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Glory, Вся проблема в том что таблица ФИАС идет деревом и parentguid плавающая колонка.
...
Рейтинг: 0 / 0
Процедура
    #38760897
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lcanlGlory, Вся проблема в том что таблица ФИАС идет деревом и parentguid плавающая колонка.
Нет. Вся проблема в том, что кто-то пытается делать вещи, в которых ничего не смыслит.
...
Рейтинг: 0 / 0
Процедура
    #38760903
lcanl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Glory,Все это реализовано в 1с только я не пойму что именно нужно выбрать с обработки 1с чтобы создать процедуру.
...
Рейтинг: 0 / 0
Процедура
    #38760904
lcanl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Glory, Вы правы конечно, я в этом полный ноль поэтому и пришел на форум за помощью.
...
Рейтинг: 0 / 0
Процедура
    #38760905
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lcanlGlory,Все это реализовано в 1с только я не пойму что именно нужно выбрать с обработки 1с чтобы создать процедуру.
Данный форум по Microsoft SQLServer, а не по 1C.
...
Рейтинг: 0 / 0
Процедура
    #38760906
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lcanlGlory, Вы правы конечно, я в этом полный ноль поэтому и пришел на форум за помощью.
http://www.firststeps.ru/sql/sql1.html
...
Рейтинг: 0 / 0
Процедура
    #38760909
lcanl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Glory, Я понимаю вот и написал пример процедуры чтобы форумчане, которые разбираются в MSSQL подсказали процедуру.
...
Рейтинг: 0 / 0
Процедура
    #38760916
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lcanlGlory, Я понимаю вот и написал пример процедуры чтобы форумчане, которые разбираются в MSSQL подсказали процедуру.Не хотите лечь ко мне на операцию?
Отрежу Вам что-нибудь.
Правда, я не хирург и ни черта не понимаю в медицине.
Но ничего. Буду спрашивать на форумах.
...
Рейтинг: 0 / 0
Процедура
    #38760920
lcanl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iap, Зачем язвить? Я не думаю что Вы с 1 года Вашей жизни сразу все знали. Я лишь попросил помощи не можете помочь так и напишите. Я таким раньше не сталкивался у нас в Артемовске это еще не особо практикуется. Поэтому и не изучал, извиняюсь если занял Ваше время.
...
Рейтинг: 0 / 0
Процедура
    #38760924
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lcanlЯ не думаю что Вы с 1 года Вашей жизни сразу все знали.
Но вы то как раз ничего не знаете.
А пишите. Вернее сказать транслируете свой поток сознания в какой-то код.
Вашу процедуру надо полностью переписать.
...
Рейтинг: 0 / 0
Процедура
    #38760936
lcanl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Glory, А я и не утверждаю что я что-то знаю, я лишь попросил помочь. Эта процедура тоже пример, который мне дали и сказали от нее отталкиваться. Я до этого момента не знал что эта процедура не подходит, но и других примеров работы с деревом я не нашел.
...
Рейтинг: 0 / 0
Процедура
    #38760944
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lcanlА я и не утверждаю что я что-то знаю
Просто обидно, что другие знают, а вы - нет ?

lcanlя лишь попросил помочь
Ну так не бывает чудес. Чтобы раз - и знания в голове. Учить надо азы.
Начните с простых выборок по нескольким таблицам.

lcanlЭта процедура тоже пример, который мне дали и сказали от нее отталкиваться.
Вас там целое гнездо что ли в Артемовске ?

lcanlно и других примеров работы с деревом я не нашел.
Где вы их искали ?
...
Рейтинг: 0 / 0
Процедура
    #38760951
lcanl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Glory,
1. Мне не может быть обидно, я считаю каждый человек уникален и то что дается одному легко, другому дается тяжелее значит просто мне это пока не дано.
2. С этим поспорю чудеса бывают и люди доброжелательные тоже. Мне на нескольких форумах помогали не раз и я многим благодарен, люди помогают бескорыстно.
3. Не знаю о чем Вы говорите. У нас по факту уже не может быть "гнезда" так как у нас война, ну а "гнездо" в России теперь в основном.
4. В поисковиках, возможно я не правильно ставил вопрос, все бывает.
...
Рейтинг: 0 / 0
Процедура
    #38760956
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дорогой lcanl из Артемовска.
Если вы сами подписались на внезапно подвернувшуюся работу, преувеличив перед работодателем свои познания, то самому и придется отвечать.
...
Рейтинг: 0 / 0
Процедура
    #38760962
lcanl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Glory,Зачем судить о том чего Вы не знаете? Ну да ладно, спасибо за ответы и за информацию. Как мне кажется дальнейшее обсуждение не относится к моему вопросу. Всего доброго.
...
Рейтинг: 0 / 0
Процедура
    #38760974
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lcanl,

по п.2 я Вам очень даже сочувствую.
Однако, хотя бы описали задачу простыми русскими словами, а не только своей "процедурой".
И да, смотрите в документации про рекурсивные CTE для обхода дерева (если версия сервера позволяет).
...
Рейтинг: 0 / 0
Процедура
    #38760977
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lcanl,Зачем судить о том чего Вы не знаете?
Да вы уже сами все рассказали

"переехал с дон обл и так получилось что подвернулась такая работа. " - думал работать на "стройке", а тут спросили "1С знаешь ? Да. Тогда вот садись" - "Надо апдейтить с базы ФИАС нескольких колонок"

"Я честно говоря в этом не силен. Точнее только познаю sql." но, "Не получилось с азов" - потому что время нет, завтра нужен результат или придется рассказать, что я ничего не знаю.

Поэтому "написал пример процедуры чтобы форумчане, которые разбираются в MSSQL подсказали процедуру." - т.е. взяли и переписали мой бред
...
Рейтинг: 0 / 0
Процедура
    #38760992
lcanl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Glory, Ну так 1с я знаю, mssql нет. Я не пойму причем тут это? Вы или помогаете или нет. Зачем писать чушь? Что Вы хотите от меня услышать?
...
Рейтинг: 0 / 0
Процедура
    #38761000
lcanl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iap, Задача состоит в том чтобы из одной таблицы и нескольких колонок в дереве копировать все в другую таблицу и одну колонку.
Я извиняюсь что сразу начал с процедуры мне ее дало начальство и я начал уже по ее примеру искать.
...
Рейтинг: 0 / 0
Процедура
    #38761011
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lcanlВы или помогаете или нет.
Помогать и делать за вас - это разные вещи.

lcanlЗачем писать чушь? Что Вы хотите от меня услышать?
А вы от меня хотите услышать что-то вроде
Ой, бедный lcanl. Ой, да у него нет времени учить все эти скуэли. Ой, он такой занятой. А если завтра не сделает, то будет ему бо-бо. А давай-ка я за него напишу код.
...
Рейтинг: 0 / 0
Процедура
    #38761018
lcanl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Glory,Хм... Не пишите ничего это Ваше право, зачем просто продолжать писать? Можно было даже в теме уже не отвечать и так все понятно, я же ответил Вам спасибо. Всего доброго.
...
Рейтинг: 0 / 0
Процедура
    #38761020
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lcanliap, Задача состоит в том чтобы из одной таблицы и нескольких колонок в дереве копировать все в другую таблицу и одну колонку.
Я извиняюсь что сразу начал с процедуры мне ее дало начальство и я начал уже по ее примеру искать.Как можно по этому описанию что-либо сказать?
Это же не литературный кружок.
Про 1С я, несчастный только слышал, так что увы!
А структуру таблиц и что требуется сделать в терминах таблиц и колонок необходимо представить.
Посмотрите в закреплённой на этом форуме теме что надо показать в качестве исходных данных.
...
Рейтинг: 0 / 0
Процедура
    #38761024
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lcanlМожно было даже в теме уже не отвечать и так все понятно, я же ответил Вам спасибо. Всего доброго.
Оно еще и сердится. Что такие бесчувственные люди не хотят драться за привелегию написать за него код..
Это вам всего доброго. Идите и изучайте базовые команды и принципы sql
...
Рейтинг: 0 / 0
Процедура
    #38761119
lcanl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iap,Вид запроса
Код: sql
1.
2.
3.
SELECT * FROM FIAS_ADDROBJ WHERE AOID = " + aoid +"
SELECT * FROM FIAS_ADDROBJ WHERE AOGUID = '" + PARENTGUID +FORMALNAME+SHORTNAME "' AND ACTSTATUS = 1"
USE licenses; UPDATE RTT_net SET fias_name = '" + aoid + "' WHERE id = "



PARENTGUID постоянно разный, как говорится в дереве сначала например идет РОССИЯ, потом Московская область потом район, потом город и так далее, Я так понимаю как раз в процедуре это добывается путем while (@PARENTGUID <> '') если что-то описал не так извиняюсь.
Нужно последовательно заполнить колонку fias_name из колонок PARENTGUID +FORMALNAME+SHORTNAME
...
Рейтинг: 0 / 0
Процедура
    #38761124
lcanl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Извиняюсь вот версия
Microsoft SQL Server 2014 - 12.0.2000.8 (X64)
Feb 20 2014 20:04:26
Copyright (c) Microsoft Corporation
Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)
...
Рейтинг: 0 / 0
Процедура
    #38761126
_djХомяГ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вам уже намекали на рекурсивный cte (если версия сервера позволяет)
Примеров масса
...
Рейтинг: 0 / 0
Процедура
    #38761130
_djХомяГ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да и версия сервера позволяет его использовать
...
Рейтинг: 0 / 0
Процедура
    #38761133
lcanl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_djХомяГ, Я так понимаю сначала рекурсивным запросом разложить дерево потом апдейтить колонку?
...
Рейтинг: 0 / 0
Процедура
    #38761187
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lcanl, что у Вас хранится в таблице, которую Вы пытаетесь апдейтить? Какие строки, по какому условию (принципу) надо изменить и зачем?

P.S.: если Вы свои скрипты выполняете на рабочей базе, то Вы рискуете её запороть на фиг :)
...
Рейтинг: 0 / 0
Процедура
    #38761191
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лично мне пока не понятно, зачем вообще возникла идея рекурсивного запроса.
Ну есть в таблице FIAS_ADDROBJ колонка PARENTGUID, и что? Как это связано с таблицей, куда необходимо внести изменения?
...
Рейтинг: 0 / 0
Процедура
    #38761192
lcanl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skyANA, В таблице которую пытаюсь апдейтить хранятся адреса базы ФИАС только не в древе а одной строкой с разделителями, я пытаюсь из самой базы ФИАС которая в древе то есть в колонка=улица, колонка=город, колонка=район, скопировать все в одну колонку)
...
Рейтинг: 0 / 0
Процедура
    #38761200
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lcanlВ таблице которую пытаюсь апдейтить хранятся адреса базы ФИАС только не в древе а одной строкой с разделителямиТо есть в каждой строке таблицы хранится какой-то адрес.
Одной строке, одному адресу, что сообветствует в базе "ФИАС которая в древе то есть в колонка=улица, колонка=город, колонка=район"?

Или Вы собрались апдейтить первую таблицу по фиг по какому условию? :)
...
Рейтинг: 0 / 0
Процедура
    #38761203
lcanl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skyANA,Да в каждой строке адрес вот например Московская "обл" Железнодорожный "г" Пушкина "ул"
А в базе ФИАС это разложено на несколько колонок, в одной ул в другой город в третьей дом и так далее
...
Рейтинг: 0 / 0
Процедура
    #38761204
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lcanlА в базе ФИАС это разложено на несколько колонок, в одной ул в другой город в третьей дом и так далееА на сколько строк?
...
Рейтинг: 0 / 0
Процедура
    #38761214
lcanl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skyANA,больше миллиона, я честно говоря забыл запрос который показывает сколько строк. Это уже реализовано в 1с мог бы показать процедуру может можно с нее выдрать запрос?
...
Рейтинг: 0 / 0
Процедура
    #38761216
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lcanl, или может первая таблица у Вас пока пустая и её надо заполнить данными из ФИАС?
...
Рейтинг: 0 / 0
Процедура
    #38761217
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lcanlskyANA,больше миллиона, я честно говоря забыл запрос который показывает сколько строк. Это уже реализовано в 1с мог бы показать процедуру может можно с нее выдрать запрос?Вы меня не поняли.

Сколько строк в базе ФИАС соответсвует одному адресу (одной строке), где адрес хранится в одной колонке?
...
Рейтинг: 0 / 0
Процедура
    #38761219
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сколько строк в базе ФИАС соответсвует одному адресу (одной строке) в таблице , где адрес хранится в одной колонке?
...
Рейтинг: 0 / 0
Процедура
    #38761224
lcanl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skyANA, Таблица на четверть полная, из 1с я обрабатывал эти запросы но вся проблема состоит в том что это очень долго вот и сказали перейти непосредственно в mssql
...
Рейтинг: 0 / 0
Процедура
    #38761231
lcanl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
lcanl, Сейчас попытаюсь объяснить:
Код: sql
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.
Функция ПолучитьАдрФИАС(aoid)
ун_код = aoid;
Если ПустаяСтрока(ун_код) Тогда
    Возврат "";
КонецЕсли;    
ConnectionRAR = Новый COMОбъект("ADODB.Connection"); 
ConnectionRAR.Open
Str = Новый COMОбъект("ADODB.RecordSet");
Str.Open("SELECT * FROM FIAS_ADDROBJ WHERE AOID = '" + ун_код + "'",ConnectionRAR);  
стр_возвр = "";
Пока Str.EOF() = 0 Цикл 
    стр_возвр = "" + УбратьКав(Str.Fields("FORMALNAME").Value) + " " + Str.Fields("SHORTNAME").Value;
    родитель = Str.Fields("PARENTGUID").Value;
    Str.MoveNext(); 
КонецЦикла; 

Для иии = 1 По 7 Цикл 
    Если родитель = """" + """" Тогда
        Возврат стр_возвр;
        Прервать;
    КонецЕсли;
    Str = Новый COMОбъект("ADODB.RecordSet");
    Str.Open("SELECT * FROM FIAS_ADDROBJ WHERE AOGUID = '" + родитель + "' AND ACTSTATUS = 1",ConnectionRAR);  
    Пока Str.EOF() = 0 Цикл 
         стр_возвр= "" + УбратьКав(Str.Fields("FORMALNAME").Value) + " " + Str.Fields("SHORTNAME").Value + " " + стр_возвр;
        родитель = Str.Fields("PARENTGUID").Value;
        Str.MoveNext(); 
    КонецЦикла; 
КонецЦикла; 
ConnectionRAR.Close();
Возврат стр_возвр;

КонецФункции



Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Процедура ПроставитьАдресаФИАС(Элемент)
ConnectionRAR1 = Новый COMОбъект("ADODB.Connection"); 
ConnectionRAR1.Open
Command = Новый COMОбъект("ADODB.Command");
Command.ActiveConnection = ConnectionRAR1;
Для каждого стр Из ТаблицаПартий3 Цикл 
    Если (НЕ ПустаяСтрока(стр.aoid)) И ПустаяСтрока(стр.fias_name) Тогда
        Сообщить("!!!!!!!!!!    " + стр.rtt_addr);    
        адр_фиас = ПолучитьАдрФИАС(стр.aoid);
        Command.CommandText =  "USE licenses; UPD ATE RTT_net SET fias_name = '" + адр_фиас + "' WH ERE id = " + УбратьПробелы(Строка(стр.id));
        Command.Execute();
    КонецЕсли;
КонецЦикла; 
ConnectionRAR1.Close();
КонецПроцедуры




Отсюда видимо что 5 это FORMALNAME SHORTNAME PARENTGUID AOID и AOGUID
...
Рейтинг: 0 / 0
Процедура
    #38761236
Фотография Shakill
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA, из ТСа долго выковыривать http://wiki.gis-lab.info/w/ФИАС#ADDROBJ
но imho все это бессмысленно, пока он не прочитает хоть что-то по SQL
...
Рейтинг: 0 / 0
Процедура
    #38761241
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lcanl
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Процедура ПроставитьАдресаФИАС(Элемент)
ConnectionRAR1 = Новый COMОбъект("ADODB.Connection"); 
ConnectionRAR1.Open
Command = Новый COMОбъект("ADODB.Command");
Command.ActiveConnection = ConnectionRAR1;
>>>Для каждого стр Из ТаблицаПартий3 Цикл 
    Если (НЕ ПустаяСтрока(стр.aoid)) И ПустаяСтрока(стр.fias_name) Тогда
        Сообщить("!!!!!!!!!!    " + стр.rtt_addr);    
        адр_фиас = ПолучитьАдрФИАС(стр.aoid);
        Command.CommandText =  "USE licenses; UPD ATE RTT_net SET fias_name = '" + адр_фиас + "' WH ERE id = " + УбратьПробелы(Строка(стр.id));
        Command.Execute();
    КонецЕсли;
КонецЦикла;<<< 
ConnectionRAR1.Close();
КонецПроцедуры

О! Есть некая ТаблицаПартий, что хранит aoid (идентификатор адресного объекта) и ещё какой-то идентифкатор (стр.id).

И походу задача состоит в том, чтобы в ТаблицуПартий занести данные адресного объекта, соответсвующие стр.aoid , из ФИАС в виде строки.
...
Рейтинг: 0 / 0
Процедура
    #38761242
lcanl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skyANA, Да, только в этом случае таблицапартий это rtt_net и колонка fias_name
...
Рейтинг: 0 / 0
Процедура
    #38761255
lcanl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skyANA,
Я так понимаю что на этом примере:
-- сбор всех parentguid
WITH all_parents AS (
SELECT DISTINCT parentguid
FROM addrobj
WHERE (currstatus = 0) AND (parentguid IS NOT NULL)
)
-- выбор элементов самого нижнего уровня (не входящих в список all_parents)
-- и получение полного адреса
SELECT (make_full(aoid)).*
FROM addrobj
WHERE (currstatus = 0) AND (aoguid NOT IN (SELECT parentguid FROM all_parents))

Можно разложить древо и потом результат записать в колонку?
...
Рейтинг: 0 / 0
Процедура
    #38761272
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lcanl, Вы запросы-то умеете выполнять в SQL Management Studio?
...
Рейтинг: 0 / 0
Процедура
    #38761287
lcanl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skyANA, Выполнять умею писать не очень)
...
Рейтинг: 0 / 0
Процедура
    #38761891
lcanl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вообщем получилось вот такое:
Код: sql
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.
35.
36.
37.
38.
39.
create proc ID2Fias
@id int
as
declare
@str   varchar(2048),
@aoid  varchar(2048),
@parentid varchar(2048),
@i int

select @aoid = AOID
from rtt_net7
where id = @id

SELECT 
  @str = FORMALNAME + ' '+ SHORTNAME, -- Кавычки
  @parentid = PARENTGUID 
FROM FIAS_ADDROBJ 
WHERE AOID = @aoid 

select @i = 0

while @i < 7
begin
if not isnull(@parentid,'""') = '""'
    select 
	   @str = FORMALNAME + ' '+ SHORTNAME + ' '+ @str,
	   @parentid = PARENTGUID 
	   from FIAS_ADDROBJ WHERE AOGUID = @parentid AND ACTSTATUS = 1   
select @i = @i + 1
end

select @str

update rtt_net7 
set fias_name = @str
where id = @id


go



Вопрос: Как это все сделать в "цикле" используя FETCH и CURSORS
...
Рейтинг: 0 / 0
Процедура
    #38761896
Фотография Maxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lcanl,

зачем вам курсор ? Туту по виду и цикл то не нужен в чистом виде..будет достаточно сте-шки +апдейт
...
Рейтинг: 0 / 0
Процедура
    #38761906
Фотография Shakill
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lcanl, вы открывали ссылку про ФИАС из моего прошлого комментария? там есть запросы без всяких курсоров
...
Рейтинг: 0 / 0
Процедура
    #38761913
lcanl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxx, Да вот сказали сделать так, скажите еще пожалуйста в версии mssql возможно сделать рекурсивный запрос?
И если есть все таки пример по фетчу и курсорам можете скинуть или натолкнуть как сделать?
...
Рейтинг: 0 / 0
Процедура
    #38761916
lcanl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shakill, Она у меня открыта, но мне сказали что рекурсивов нет в mssql)
...
Рейтинг: 0 / 0
Процедура
    #38761922
Фотография Maxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lcanlMaxx, Да вот сказали сделать так, скажите еще пожалуйста в версии mssql возможно сделать рекурсивный запрос?
http://msdn.microsoft.com/en-us/library/ms175972.aspx
Пример D
...
Рейтинг: 0 / 0
Процедура
    #38761923
Фотография Maxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lcanlShakill, Она у меня открыта, но мне сказали что рекурсивов нет в mssql)
select @@VERSION покажите
...
Рейтинг: 0 / 0
Процедура
    #38761924
_djХомяГ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если это правда
авторMicrosoft SQL Server 2014 - 12.0.2000.8 (X64)
Feb 20 2014 20:04:26
Copyright (c) Microsoft Corporation
Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)

То Вас дезинформируют
...
Рейтинг: 0 / 0
Процедура
    #38761931
lcanl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_djХомяГ, Это так, читал что действительно рекурсивные запросы есть. Но сказали делать так. Вот пытаюсь сделать.
...
Рейтинг: 0 / 0
Процедура
    #38761938
lcanl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxx, Это я понял) это рекурсивный запрос, а есть примеры использования процедуры в fetch и cursor?
...
Рейтинг: 0 / 0
Процедура
    #38761944
Фотография Maxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lcanlцедуры в fetch и cursor?
есть..но в данном случае - ето путь в никуда вообще
...
Рейтинг: 0 / 0
Процедура
    #38761948
Фотография Shakill
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lcanlMaxx, Это я понял) это рекурсивный запрос, а есть примеры использования процедуры в fetch и cursor?забудьте про курсоры пока не освоите написание запросов
...
Рейтинг: 0 / 0
Процедура
    #38761951
lcanl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shakill,Потихоньку осваиваю все таки к чему то пришел за ночь, теперь нужно как раз освоить как работать с курсорами на примере процедуры которую я написал)
...
Рейтинг: 0 / 0
Процедура
    #38761959
Фотография Shakill
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lcanlShakill,Потихоньку осваиваю все таки к чему то пришел за ночь, теперь нужно как раз освоить как работать с курсорами на примере процедуры которую я написал)не нужны тут курсоры, вас обманули
...
Рейтинг: 0 / 0
Процедура
    #38761962
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Курсоры любят ораклоиды.
Тут их не очень-то любят.
...
Рейтинг: 0 / 0
Процедура
    #38761965
lcanl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shakill,Вот я нашел такой пример:
Код: sql
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 TABLE #TMP
(
   ii int
)
GO

INSERT INTO #TMP(ii) VALUES(1)
INSERT INTO #TMP(ii) VALUES(2)
INSERT INTO #TMP(ii) VALUES(3)

GO

--Create a cursor.
DECLARE cur CURSOR
FOR SELECT * FROM #TMP

--Display the status of the cursor before and after opening
--closing the cursor.

SELECT CURSOR_STATUS('global','cur') AS 'After declare'
OPEN cur
SELECT CURSOR_STATUS('global','cur') AS 'After Open'
CLOSE cur
SELECT CURSOR_STATUS('global','cur') AS 'After Close'

--Remove the cursor.
DEALLOCATE cur

--Drop the table.
DROP TABLE #TMP



Как сюда грубо говоря вставить процедуру? Извиняюсь если не правильно написал.

Да я бы с радостью от них отказался но сказали сделать что тут поделаешь.
...
Рейтинг: 0 / 0
Процедура
    #38761976
lcanl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
lcanl, Вот этот вариант вроде лучше:
Код: sql
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.
CREATE PROCEDURE [dbo].[sp_UpdateCouponCount]
AS

Declare     @couponCount int,
            @CouponName nvarchar(50),
            @couponIdFromQuery int


Declare curP cursor For

  select COUNT(*) as totalcount , Name as name,couponuse.couponid  as couponid from Coupon as coupon 
  join CouponUse as couponuse on coupon.id = couponuse.couponid
  where couponuse.id=@cuponId
  group by couponuse.couponid , coupon.Name

OPEN curP 
Fetch Next From curP Into @couponCount, @CouponName,@couponIdFromQuery

While @@Fetch_Status = 0 Begin

    print @couponCount
    print @CouponName

    update Coupon SET NoofUses=@couponCount
    where couponuse.id=@couponIdFromQuery


Fetch Next From curP Into @couponCount, @CouponName,@couponIdFromQuery

End -- End of Fetch

Close curP
Deallocate curP



Тут код процедуры нормально должен встать?
...
Рейтинг: 0 / 0
Процедура
    #38762519
lcanl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сколько будет стоить такая задача?
...
Рейтинг: 0 / 0
Процедура
    #38762615
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lcanlСколько будет стоить такая задача?
Она будет бесценна. Потому что с курсором эта решенеи будет уникальным. Как МонаЛиза, например.
...
Рейтинг: 0 / 0
Процедура
    #38762829
lcanl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Glory,
Хорошо, а если сделать рекурсивным запросом как здесь
...
Рейтинг: 0 / 0
Процедура
    #38762830
lcanl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Процедура
    #38762858
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lcanlа если сделать рекурсивным запросом как здесь
А как же задание руководства даелать на курсорах ?
...
Рейтинг: 0 / 0
Процедура
    #38763381
lcanl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите пожалуйста как в процедуре поменять не по id отбор а полный?
И подскажите пожалуйста как убрать кавычки в начале результата вот например "Свердловская" "обл" "Артемовский" "р-н" "Лебедкино" "с" "Октябрьская" "ул". Как в процедуре убрать "Свердловская" вначале кавычки?

Код: sql
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.
35.
36.
37.
38.
39.
create proc ID2Fias
@id int
as
declare
@str   varchar(2048),
@aoid  varchar(2048),
@parentid varchar(2048),
@i int

select @aoid = AOID
from rtt_net7
where id = @id

SELECT 
  @str = FORMALNAME + ' '+ SHORTNAME, -- Кавычки
  @parentid = PARENTGUID 
FROM FIAS_ADDROBJ 
WHERE AOID = @aoid 

select @i = 0

while @i < 7
begin
if not isnull(@parentid,'""') = '""'
    select 
	   @str = FORMALNAME + ' '+ SHORTNAME + ' '+ @str,
	   @parentid = PARENTGUID 
	   from FIAS_ADDROBJ WHERE AOGUID = @parentid AND ACTSTATUS = 1   
select @i = @i + 1
end

select @str

update rtt_net7 
set fias_name = @str
where id = @id


go
...
Рейтинг: 0 / 0
Процедура
    #38763490
lcanl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
lcanl,
Неужели нет никого кто бы мог помочь, чуть чуть ведь осталось?
...
Рейтинг: 0 / 0
82 сообщений из 82, показаны все 4 страниц
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Процедура
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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