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

Откуда:
Сообщений: 80
Подскажите, пожалуйста,
У меня с помощью процедуры извлекаются данные из нескольких таблиц, необходимо вносить соответствующие изменения в эти данные, но, как я понимаю, раз данные берутся из нескольких таблиц, внесение изменений запрещено, можно ли это как-нибудь обойти?
4 май 11, 10:12    [10601954]     Ответить | Цитировать Сообщить модератору
 Re: Изменение данных, полученных с помощью процедуры sql  [new]
Начинающий SQL 2008
Member

Откуда:
Сообщений: 438
бегемотиха,

Не совсем понятно...
Результат хранимой процедуры можно кинуть во временную таблицу через
insert ... exec ...
Далее поменять в этой таблице данные.
4 май 11, 10:21    [10602016]     Ответить | Цитировать Сообщить модератору
 Re: Изменение данных, полученных с помощью процедуры sql  [new]
бегемотиха
Member

Откуда:
Сообщений: 80
Начинающий SQL 2008,

Я имею в виду, когда пользователь нажимает кнопку, открывается перечень данных, результат отработавшей процедуры, и пользователю необходимо уже в эту перечень внести определенные изменения
4 май 11, 10:33    [10602102]     Ответить | Цитировать Сообщить модератору
 Re: Изменение данных, полученных с помощью процедуры sql  [new]
Glory
Member

Откуда:
Сообщений: 104751
бегемотиха

Я имею в виду, когда пользователь нажимает кнопку, открывается перечень данных, результат отработавшей процедуры, и пользователю необходимо уже в эту перечень внести определенные изменения

А MSSQL не может отвечать за то, что там вам позволяет или не позволяет делать с полученными результатами ваш клиентский интерфейс. Наверное он достаточно умен(или наоборот), чтобы понять, что нельзя менять данные полученные из разных таблиц одной командой
4 май 11, 10:39    [10602137]     Ответить | Цитировать Сообщить модератору
 Re: Изменение данных, полученных с помощью процедуры sql  [new]
qwerty112
Guest
бегемотиха
Начинающий SQL 2008,

Я имею в виду, когда пользователь нажимает кнопку, открывается перечень данных, результат отработавшей процедуры, и пользователю необходимо уже в эту перечень внести определенные изменения

нууу, тут всё будет зависить от цвета кнопки

а серьёзно, - раз результат селекта - нередактируемый, то от сервера "выпрашивать" уже нечего
ходите в форум по своему клиенту (Акс вроде) и там "попросите"
4 май 11, 10:40    [10602148]     Ответить | Цитировать Сообщить модератору
 Re: Изменение данных, полученных с помощью процедуры sql  [new]
бегемотиха
Member

Откуда:
Сообщений: 80
qwerty112,

То есть даже если результат запроса берется из 3 таблиц базы, изменения нужно вносить только в одну из них, это дела не меняет? и уже ничего не сделать, с изменениями?
А вообще можно создать из 3-х таблиц запрос , который можно будет редактировать (без union имеется в виду)?
4 май 11, 10:50    [10602208]     Ответить | Цитировать Сообщить модератору
 Re: Изменение данных, полученных с помощью процедуры sql  [new]
Glory
Member

Откуда:
Сообщений: 104751
бегемотиха
qwerty112,

То есть даже если результат запроса берется из 3 таблиц базы, изменения нужно вносить только в одну из них, это дела не меняет?

А ваше клиентское приложение в курсе, что "изменения нужно вносить только в одну из них" ? Вы как ему сообщили, в какую одну из трех таблиц вы намерены вносить изменения ?
4 май 11, 10:52    [10602221]     Ответить | Цитировать Сообщить модератору
 Re: Изменение данных, полученных с помощью процедуры sql  [new]
qwerty112
Guest
бегемотиха
...
А вообще можно создать из 3-х таблиц запрос , который можно будет редактировать (без union имеется в виду)?

вруг чё, я - непротив :)
4 май 11, 10:56    [10602238]     Ответить | Цитировать Сообщить модератору
 Re: Изменение данных, полученных с помощью процедуры sql  [new]
бегемотиха
Member

Откуда:
Сообщений: 80
Glory,
Клиентское приложение в данном случае сводиться к тому, чтоб просто открыть результат процедуры, а поставить в курс наверно нужно саму процедуру, вопрос как раз в том как это можно сделать?
4 май 11, 11:00    [10602270]     Ответить | Цитировать Сообщить модератору
 Re: Изменение данных, полученных с помощью процедуры sql  [new]
Glory
Member

Откуда:
Сообщений: 104751
бегемотиха
Glory,
Клиентское приложение в данном случае сводиться к тому, чтоб просто открыть результат процедуры, а поставить в курс наверно нужно саму процедуру, вопрос как раз в том как это можно сделать?

И как вы себе представляете одну команду UPDATE, которая изменит сразу 3 таблицы ?
4 май 11, 11:02    [10602285]     Ответить | Цитировать Сообщить модератору
 Re: Изменение данных, полученных с помощью процедуры sql  [new]
бегемотиха
Member

Откуда:
Сообщений: 80
Glory, почему три, я же говорю только в ОДНУ, данные из других таблиц нужны для поиска строк изменения, и опять же речь идет о том, что пользователь руками будет заносить нужные ему даные
4 май 11, 11:08    [10602348]     Ответить | Цитировать Сообщить модератору
 Re: Изменение данных, полученных с помощью процедуры sql  [new]
Glory
Member

Откуда:
Сообщений: 104751
бегемотиха
Glory, почему три, я же говорю только в ОДНУ, данные из других таблиц нужны для поиска строк изменения, и опять же речь идет о том, что пользователь руками будет заносить нужные ему даные

Еще раз - ваше приложение должно прямо из вашей головы считать мысль о том, какую именно одну из трех таблиц вы намерены сейчас обновлять ?
4 май 11, 11:11    [10602381]     Ответить | Цитировать Сообщить модератору
 Re: Изменение данных, полученных с помощью процедуры sql  [new]
бегемотиха
Member

Откуда:
Сообщений: 80
Glory,
Еще раз, как моему приложению можно указать какую таблицу оно должно разрешить изменить?!!
4 май 11, 11:14    [10602414]     Ответить | Цитировать Сообщить модератору
 Re: Изменение данных, полученных с помощью процедуры sql  [new]
Glory
Member

Откуда:
Сообщений: 104751
бегемотиха
Glory,
Еще раз, как моему приложению можно указать какую таблицу оно должно разрешить изменить?!!

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

Откуда:
Сообщений: 80
Glory,
Ладно я наверно не правильно формулирую вопрос,
Запрет на изменения ставиться не приложением, а самой процедурой, выводящей данные, можно ли, в sql проприсать, какие именно данные она должна разрешить редактировать в результирующем запросе?
4 май 11, 11:18    [10602452]     Ответить | Цитировать Сообщить модератору
 Re: Изменение данных, полученных с помощью процедуры sql  [new]
Glory
Member

Откуда:
Сообщений: 104751
бегемотиха
Glory,
Ладно я наверно не правильно формулирую вопрос,
Запрет на изменения ставиться не приложением, а самой процедурой, выводящей данные, можно ли, в sql проприсать, какие именно данные она должна разрешить редактировать в результирующем запросе?

Запрет на изменения ставиться именно вашим приложением
Сервер не может вам запретить что либо делать с выданным результатом
Потому что результат этот уже не находится на сервере
Он уже передан вам
4 май 11, 11:20    [10602461]     Ответить | Цитировать Сообщить модератору
 Re: Изменение данных, полученных с помощью процедуры sql  [new]
n0isy
Member

Откуда:
Сообщений: 149
Glory
Сервер не может вам запретить что либо делать с выданным результатом
Потому что результат этот уже не находится на сервере
Он уже передан вам


Не совсем верно. Нажмите на таблице в MSSQL Management Studio на таблице правой кнопкой Edit. Потом на view с left join тоже самое. Потом на view с union. Google о updatable views. И вообще не забываем о серверных курсорах и незакрытых соединениях.
В вашем случае IMHO нужно построить запрос / view так, чтобы таблица для изменений имела связи один-ко-многим, а подчиненные таблицы присоединялись как LEFT JOIN.
4 май 11, 12:10    [10602813]     Ответить | Цитировать Сообщить модератору
 Re: Изменение данных, полученных с помощью процедуры sql  [new]
Glory
Member

Откуда:
Сообщений: 104751
n0isy
Glory
Сервер не может вам запретить что либо делать с выданным результатом
Потому что результат этот уже не находится на сервере
Он уже передан вам


Не совсем верно. Нажмите на таблице в MSSQL Management Studio на таблице правой кнопкой Edit. Потом на view с left join тоже самое. Потом на view с union. Google о updatable views. И вообще не забываем о серверных курсорах и незакрытых соединениях.
В вашем случае IMHO нужно построить запрос / view так, чтобы таблица для изменений имела связи один-ко-многим, а подчиненные таблицы присоединялись как LEFT JOIN.

А что Management Studio уже перестала быть клиентским приложением ?
4 май 11, 12:12    [10602834]     Ответить | Цитировать Сообщить модератору
 Re: Изменение данных, полученных с помощью процедуры sql  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
бегемотиха,

давайте конкретней: что делает процедура? (Может, там один SELECT?)
4 май 11, 12:17    [10602874]     Ответить | Цитировать Сообщить модератору
 Re: Изменение данных, полученных с помощью процедуры sql  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Кроме того, получать данные можно одной процедурой, а апдейтить - другой.
4 май 11, 12:22    [10602913]     Ответить | Цитировать Сообщить модератору
 Re: Изменение данных, полученных с помощью процедуры sql  [new]
n0isy
Member

Откуда:
Сообщений: 149
Glory
А что Management Studio уже перестала быть клиентским приложением ?


Не перестало. Но как и другие цивилизованные клиенты, использует свойства строки и столбца editable, которое...внимание! выставляется сервером SQL.
Для Вас наверно будет новостью, что для изменения данных вовсе не обязательно использовать UPDATE.
ODBC - как одна из моделей.
SQLColAttribute

SQL_DESC_UPDATABLE describes the updatability of the column in the result set, not the column in the base table. The updatability of the base column on which the result set column is based may be different from the value in this field. Whether a column is updatable can be based on the data type, user privileges, and the definition of the result set itself. If it is unclear whether a column is updatable, SQL_ATTR_READWRITE_UNKNOWN should be returned.
4 май 11, 13:25    [10603445]     Ответить | Цитировать Сообщить модератору
 Re: Изменение данных, полученных с помощью процедуры sql  [new]
Sincler
Member

Откуда:
Сообщений: 111
С каких это пор сервер должен угадывать что от него хочет клиент?!
Сервер работал, работает и всегда будет работать только так как ему конкрентно сказалаи, а не так как якобы надеется клиент. ИМХО, чтобы понять как вообще общается клиентское приложение с серваком советую поюзать профайлер и посмотреть как тот же самый адо обновляет данные на серваке тогда все сразу станет на свои места. Написали процедуру на выборку из трех таблиц, напишите еще одну в которой сами НЕ СЕРВЕР, А ВЫ разгребайте инфу и обновляйте те таблицы или таблицу которую необходимо.
4 май 11, 13:26    [10603458]     Ответить | Цитировать Сообщить модератору
 Re: Изменение данных, полученных с помощью процедуры sql  [new]
iljy
Member

Откуда:
Сообщений: 8711
n0isy
Glory
А что Management Studio уже перестала быть клиентским приложением ?


Не перестало. Но как и другие цивилизованные клиенты, использует свойства строки и столбца editable, которое...внимание! выставляется сервером SQL.
Для Вас наверно будет новостью, что для изменения данных вовсе не обязательно использовать UPDATE.
ODBC - как одна из моделей.
SQLColAttribute

SQL_DESC_UPDATABLE describes the updatability of the column in the result set, not the column in the base table. The updatability of the base column on which the result set column is based may be different from the value in this field. Whether a column is updatable can be based on the data type, user privileges, and the definition of the result set itself. If it is unclear whether a column is updatable, SQL_ATTR_READWRITE_UNKNOWN should be returned.

Вы бы профайлер запустили прежде чем чушь писать. SSMS замечательно выполняет UPDATE для изменения данных, как и любое другое приложение. Какие действия скрывают провайдеры ODBC/OLEDB - это другой вопрос.
4 май 11, 13:36    [10603548]     Ответить | Цитировать Сообщить модератору
 Re: Изменение данных, полученных с помощью процедуры sql  [new]
Glory
Member

Откуда:
Сообщений: 104751
n0isy
Glory
А что Management Studio уже перестала быть клиентским приложением ?


Не перестало. Но как и другие цивилизованные клиенты, использует свойства строки и столбца editable, которое...внимание! выставляется сервером SQL.
Для Вас наверно будет новостью, что для изменения данных вовсе не обязательно использовать UPDATE.
ODBC - как одна из моделей.
SQLColAttribute

SQL_DESC_UPDATABLE describes the updatability of the column in the result set, not the column in the base table. The updatability of the base column on which the result set column is based may be different from the value in this field. Whether a column is updatable can be based on the data type, user privileges, and the definition of the result set itself. If it is unclear whether a column is updatable, SQL_ATTR_READWRITE_UNKNOWN should be returned.

И этот аттрибут настолько "суров", что не позволяет программистам никак разрешить изменения данных в ячейках грида ?
Как только программист захочет это сделать, то сервер сразу перехватывает управление и запрещает ввод данных ?
4 май 11, 14:04    [10603788]     Ответить | Цитировать Сообщить модератору
 Re: Изменение данных, полученных с помощью процедуры sql  [new]
n0isy
Member

Откуда:
Сообщений: 149
Glory
И этот аттрибут настолько "суров", что не позволяет программистам никак разрешить изменения данных в ячейках грида ?
Как только программист захочет это сделать, то сервер сразу перехватывает управление и запрещает ввод данных ?


Нисколько не суров. Конечно можно сделать на клиенте всё что угодно. Просто по нему можно понять, насколько АБСТРАКТНЫЙ запрос к БД updatable или нет.
Топикстартер, скорее всего сидит под каким-то клиентом типа Access, который и смотрит подобный атрибут - потому что НИЧЕГО не знает о конкретном запросе. И сообщения "обратитесь к документации/форуму по вашему клиенту" - верны.

Извиняюсь, если вызвал волну гнева местных Гуру.
4 май 11, 17:17    [10605654]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить