Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 хранимые процедуры sql  [new]
gomargo
Member

Откуда: Москва
Сообщений: 33
здравствуйте. я только учусь и хочу убедиться, что я правильно всё понимаю -
у меня есть огромная база, хочу написать хп (хранимую процедуру), которая будет участвовать в процессе регистрации карточек. итак, есть карточка ( она же таблица ) которая содержит данные (около 20ти полей), эта карточка сначала проходит регистрацию (заполнение пользователем), потом отправляется на утверждение, если карточка не утверждена, то она снова возвращается в раздел регистрации со всеми заполненными данными, так вот мне надо написать именно эту процедуру, как мне сказали "перенос данных из одной таблицы в другую", потому что есть таблица карточки и практически аналогичная по составу полей вторая таблица типа зарегистрированные карточки и надо перенести данные заполненные пользователем на повторную регистрацию.
что я сделала, объявила все поля как переменные и с помощью insert into все их добавила во вторую таблицу, что на мой взгляд не является процедурой для вышеописанного процесса, вопрос как бы вы сделали данную процедуру?
25 фев 15, 10:53    [17308794]     Ответить | Цитировать Сообщить модератору
 Re: хранимые процедуры sql  [new]
Триггерман
Member

Откуда:
Сообщений: 113
gomargo,
Здравствуйте!
Хотя вы только учитесь, но вы поняли важную вещь - манипуляции с данными лучше производить посредством хранимых процедур. Таким образом, в базе данных хранятся не только данные, но и средства их обработки, т. е. логика обработки. Вообще-то базы данных - тема обширная и непростая, поэтому, возможно, вам стоит задавать не все вопросы сразу, а последовательно, снабжая их образцами вашего кода.
25 фев 15, 11:02    [17308861]     Ответить | Цитировать Сообщить модератору
 Re: хранимые процедуры sql  [new]
Glory
Member

Откуда:
Сообщений: 104760
gomargo
что я сделала, объявила все поля как переменные и с помощью insert into все их добавила во вторую таблицу, что на мой взгляд не является процедурой для вышеописанного процесса

В TSQL хранимой процедурой называется серверный объект, созданный командой CREATE PROCEDURE

gomargo
вопрос как бы вы сделали данную процедуру?

Написали бы CREATE PROCEDURE со всеми нужными действиями внутри
25 фев 15, 11:04    [17308875]     Ответить | Цитировать Сообщить модератору
 Re: хранимые процедуры sql  [new]
gomargo
Member

Откуда: Москва
Сообщений: 33
Glory,

да я понимаю, что create procedure :)
вот как у меня сейчас, только я заменила реальные поля на глупые записи в стиле "все эти поля". имеется в виду все те поля, которые заполняет пользователь в карточке и которые должны отправляться в первую таблицу обратно.
create procedure [dbo].[FILLING_KONKURS_CARD]( 

--Заполняются объекты конкурса

  @id_konkurs_card int,  	
  @out_msg varchar(255) out)
as
begin

  declare
-- @поле1
@поле2 
@поле 3 и тд --


  SET @sys_usr = SYSTEM_USER
  set @id_login = isnull((select top 1 ID_LOGIN from ST_LOGINS where RTRIM(LOGIN_VALUE) = RTRIM(@sys_usr)),0)
  if @id_login = 0
  begin
    set @out_msg = 'Процедуру пытается выполнить субъект, не являющийся пользователем системы!' 
    return 0
  end
  set @curr_date = getdate()


  select
-- @поле1= поле 1
@поле2 = поле 2
@поле 3 =поле 3 и тд --

  from таблица 2 where ID_KONKURS_CARD = @id_konkurs_card 
  
  insert into таблица  2 (
все эти поля
  )
  select
  все эти поля + 0, @curr_date, @curr_date,  @id_login, @id_login,
  from таблицы 2 where ID_KONKURS_CARD = @id_konkurs_card


  END
25 фев 15, 11:45    [17309173]     Ответить | Цитировать Сообщить модератору
 Re: хранимые процедуры sql  [new]
gomargo
Member

Откуда: Москва
Сообщений: 33
Glory,

я как раз и спрашиваю именно эти действия внутри, потому что мне моим зеленым взглядом очень сложно так взять и бабааааах понять логику на не своей базе, плюс имея слишком мало опыта да и к тому же само задание поняла размыто и хочу сделать хоть что-то, но с пониманием логики, а не как сейчас я пишу на угад, а я хочу быть хозяйкой своей процедуры, а не наоборот :)
25 фев 15, 11:53    [17309261]     Ответить | Цитировать Сообщить модератору
 Re: хранимые процедуры sql  [new]
Glory
Member

Откуда:
Сообщений: 104760
gomargo
вот как у меня сейчас,

И в чем вопрос тогда ?
25 фев 15, 11:53    [17309263]     Ответить | Цитировать Сообщить модератору
 Re: хранимые процедуры sql  [new]
Glory
Member

Откуда:
Сообщений: 104760
gomargo
я как раз и спрашиваю именно эти действия внутри,

Т.е. нужно за вас придумать начальные данные, конечный результат и алгоритм получения этого результата ?
25 фев 15, 11:55    [17309276]     Ответить | Цитировать Сообщить модератору
 Re: хранимые процедуры sql  [new]
gomargo
Member

Откуда: Москва
Сообщений: 33
Glory,

вопрос как бы вы сделали и как бы вы размышляли при написании данной процедуры ,типа - ага, мне нужно 182 переменных, которые надо объявить, потом выдать сообщение что объект не зареган, ретурн 0 все дела, хочу въехать в логику, понять, как надо понимать :D боже, какая я тупая, но мне правда нужно научиться разбивать одну задачу на блоки и постепенно понимать как реализовать каждый, а я не могу. Самостоятельное обучение взрывает мозг, я вот свой взорвала этими примерами, томиками в 300 страниц и так и ничего не поняла, нет руки которая направит и тыкнет куда надо.
25 фев 15, 11:58    [17309295]     Ответить | Цитировать Сообщить модератору
 Re: хранимые процедуры sql  [new]
gomargo
Member

Откуда: Москва
Сообщений: 33
Glory,

да не нужно придумывать, мне нужна логика написания этой хп.
говорят у женщин нет логики, вот хотелось бы её приобрести, понимаете?
я не прошу что-то за меня делать, я прошу научить, если есть желание и возможность.
25 фев 15, 12:02    [17309314]     Ответить | Цитировать Сообщить модератору
 Re: хранимые процедуры sql  [new]
gomargo
Member

Откуда: Москва
Сообщений: 33
Glory,

если нет этого желания, то можно просто послать в библиотеку, скинув хорошую литературу :) тоже буду благодарна, хотя я уже перечитала немного..
25 фев 15, 12:04    [17309329]     Ответить | Цитировать Сообщить модератору
 Re: хранимые процедуры sql  [new]
Glory
Member

Откуда:
Сообщений: 104760
gomargo
вопрос как бы вы сделали

- Взял бы бумагу и карандаш
- Нарисовал блок схему алгоритма
- Потом бы решал, какими командами реализовывать этот алгоритм
- И только в конце поместил бы эти команды в процедуру, с определением входных/выходных параметров, кодов возврата и сообщений

gomargo
я вот свой взорвала этими примерами, томиками в 300 страниц

Процедура - это всего лишь хранимый на сервере в виде отдельного объекта список команд.
25 фев 15, 12:06    [17309339]     Ответить | Цитировать Сообщить модератору
 Re: хранимые процедуры sql  [new]
gomargo
Member

Откуда: Москва
Сообщений: 33
Glory, блок-схема.. да, с ней явно проще было бы.. сейчас посижу и подумаю ещё разок, если я вообще на это способна :D а чтобы определить параметры надо ведь очень хорошо знать базу, верно?

спасибо, что отвечаете.
25 фев 15, 12:48    [17309607]     Ответить | Цитировать Сообщить модератору
 Re: хранимые процедуры sql  [new]
Glory
Member

Откуда:
Сообщений: 104760
gomargo
а чтобы определить параметры надо ведь очень хорошо знать базу, верно?

Для того, чтобы уметь ездить на машине, нужно ли наизусть знать именования всех агрегатов и узлов конкретного автомобиля ?
25 фев 15, 12:51    [17309632]     Ответить | Цитировать Сообщить модератору
 Re: хранимые процедуры sql  [new]
gomargo
Member

Откуда: Москва
Сообщений: 33
Glory,

нет..
25 фев 15, 12:56    [17309676]     Ответить | Цитировать Сообщить модератору
 Re: хранимые процедуры sql  [new]
Merdoc
Member

Откуда: Новосибирск
Сообщений: 103
gomargo,
А нет вопроса про сам подход к реализации?
Я бы сделал одной таблицей с простым полем "утверждена".
Или если очень хочется иметь наглядный документооборот - то поле "Статус" (регистрация, утверждение, утверждено, не утверждено и т.д.) +поля для ведения версионности (даты изменения, кто менял и т.п.)
25 фев 15, 13:20    [17309879]     Ответить | Цитировать Сообщить модератору
 Re: хранимые процедуры sql  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
Прежде, чем писать код, необходимо тщательно продумать структуру хранения данных.
Поищите обучающие материалы по реляционной структуре данных, здесь вроде бы неплохое популярное объяснение:
http://postgresql.ru.net/doc/dbguide/3-1.html
25 фев 15, 13:27    [17309937]     Ответить | Цитировать Сообщить модератору
 Re: хранимые процедуры sql  [new]
gomargo
Member

Откуда: Москва
Сообщений: 33
Merdoc,

поле статус есть, про одну таблицу согласна, но мне дали вот именно такую базу, в которой сложно что-либо понять и сказали написать эту процедуру возврата значений из утверждения на регистрацию. я попыталась уточнить, мне сказали - просто перенеси данные из табл 1 в таблицу 2, где все поля одинаковые, ну я и написала и не могу понять правильно ли я это сделала и мне кажется что перенос данных из одной таблицы в другую - это не тоже самое что процедура по перенесению данных из утверждения обратно в регистрацию, так как тут нужен параметр ну например @статус, и если он = не утверждено, то insert в таком случае возвращает старые значение таблицы 1.. вот и сижу парюсь, гадаю, какие параметры ещё возможно нужны.
25 фев 15, 13:36    [17310004]     Ответить | Цитировать Сообщить модератору
 Re: хранимые процедуры sql  [new]
gomargo
Member

Откуда: Москва
Сообщений: 33
Владислав Колосов,

спасибо большое, вот я шуму навела, Вам наверно смешно от моих вопросов :) но я правда очень сильно хочу научиться.
25 фев 15, 13:40    [17310041]     Ответить | Цитировать Сообщить модератору
 Re: хранимые процедуры sql  [new]
Merdoc
Member

Откуда: Новосибирск
Сообщений: 103
gomargo, Тогда смысла парится вообще нет.
Сделайте как просят. Хотят перенос - сделайте Insert в одну таблицу и Delete по другой.
У вас в БД видимо вся логика и реализована по наличию в таблице, поэтому и просят сделать перенос записи.
25 фев 15, 13:42    [17310059]     Ответить | Цитировать Сообщить модератору
 Re: хранимые процедуры sql  [new]
gomargo
Member

Откуда: Москва
Сообщений: 33
вот и я так же подумала т написала хп, которую цитировала выше, но я то хочу научиться прям самой-самой всё реализовывать :)
а то урывками я так и буду писать какие-то недопроцедуры :(
ой, если честно, тут когда вопрос задашь, даже глупый и несуразный, то так легче становится :) даже если ответа не находишь. я вообще удивлена, что мне отвечают, сижу радуюсь хехе :) спасибо))
25 фев 15, 13:48    [17310100]     Ответить | Цитировать Сообщить модератору
 Re: хранимые процедуры sql  [new]
Merdoc
Member

Откуда: Новосибирск
Сообщений: 103
gomargo, Это называется неуверенность ).
А вообще половину народу тут просто делать нефиг. Вот и пишем ответы на любые вопросы. Иногда, правда, ругательные )
25 фев 15, 13:55    [17310167]     Ответить | Цитировать Сообщить модератору
 Re: хранимые процедуры sql  [new]
gomargo
Member

Откуда: Москва
Сообщений: 33
Merdoc,

ругаете за незнание или просто так ради веселухи? :)
25 фев 15, 15:32    [17310788]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить