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

Откуда:
Сообщений: 438
При выполнении хранимой процедуры , после ее создания и запуска,
выводится сообщение

Server: Msg 8629, Level 16, State 3, Procedure UPDATE_TBL_CLASS_ALL_FIELDS, Line 33
The query processor could not produce a query plan from the optimizer because a query cannot update a text, ntext, or image column and a clustering key at the same time.


Вот моя процедура


-- =============================================

-- Данный SQL запрос осуществляет обновление данных о выбранном классе документации.

-- Обновлению подлежат все поля без исключения, в отличии от таблиц типа документа и документа.

-- Замечание: 
--            Входными данными является старое наименование класса документации CLASS_NAME, таблицы TBL_CLASS.
--            Это необходимо для поиска записи в соответствии с ключом, кроме этих данных так же передаются значения остальных полей. 

-- Замечание: 
--            Целосность данных сохраняется автоматически, что указывается в создаваемой диаграмме базы данных.


-- Замечание: 
--            Обновление даных осуществляется с применением явной транзакции.


-- Замечание: если значение поля CLASS_NAME не определено, то в таком случае
--            оно принимает значение по умолчанию, DEFAULT == "Отсутствует".


-- Замечание: поля, не имеющие данных, но позволяющие пометку значением NULL,
--            явным образом задаются как NULL.



-- =============================================

-- Создание процедуры

IF EXISTS (SELECT name 
	   FROM   sysobjects 
	   WHERE  name = N'UPDATE_TBL_CLASS_ALL_FIELDS' 
	   AND 	  type = 'P')
    DROP PROCEDURE UPDATE_TBL_CLASS_ALL_FIELDS
GO

CREATE PROCEDURE UPDATE_TBL_CLASS_ALL_FIELDS

             @pAltCLASS_NAME   nvarchar (255),
             @pCLASS_NAME      nvarchar (255),
             @pCLASS_NOTE      ntext, 
             @pINSTRUCTOR      bit,
             @pTRAINEE         bit,
             @pREADER          bit



AS

-- Код ошибки
   DECLARE @MyError int 

--////////////////////////////////////////////////////////////////////////////

-- Проверка входных данных
   IF @pCLASS_NAME = ''  
     BEGIN  
            SET  @pCLASS_NAME = 'Отсутствует'
     END 


--///////////////////////////////////////////////////////////////////////////
  

-- Исполнение транзакции
BEGIN TRANSACTION  TranSP

  UPDATE TBL_CLASS

   SET 
       CLASS_NAME   =   @pCLASS_NAME,
       CLASS_NOTE   =   @pCLASS_NOTE,
       INSTRUCTOR   =   @pINSTRUCTOR,
       TRAINEE      =   @pTRAINEE,
       READER       =   @pREADER

  WHERE  CLASS_NAME   =   @pAltCLASS_NAME



-- Извлекаем код ошибки
   SELECT @MyError = @@ERROR

-- Проверяем код ошибки
   IF @MyError = 0
      BEGIN
            -- Успешное исполнение
            COMMIT TRANSACTION  TranSP 
      END
   ELSE
      BEGIN
            -- Ошибка исполнения
            ROLLBACK TRANSACTION  TranSP
RAISERROR ('В процессе выполнения операции произошла ошибка, данные не были обновлены.
Для обновления данных сделайте повторное выполнение данной операции.
', 16, 1)
      END      


GO

-- =============================================
-- example to execute the store procedure
-- =============================================

EXECUTE UPDATE_TBL_CLASS_ALL_FIELDS
                                       @pAltCLASS_NAME   = 'УММ СППО',
                                       @pCLASS_NAME       = 'УММ СППО_',
                                       @pCLASS_NOTE      = 'Учебно-методические материалы службы подготовки персонала оперативного.',
                                       @pINSTRUCTOR      = 1,
                                       @pTRAINEE         = 1,
                                       @pREADER          = 0


GO


Вот присоединено изображение таблицы, ее структуры.

Вопрос: в чем и где ошибка, и как ее исправить?

Заренее благодарю....




-----------------------------------------------------------
С уважением,MySQLdb

К сообщению приложен файл. Размер - 0Kb
20 апр 05, 10:51    [1481622]     Ответить | Цитировать Сообщить модератору
 Re: Не проходит UPDATE запрос  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37103
Ну так, imho, в тексте сообщения об ошибке все четко и ясно написано.
20 апр 05, 10:52    [1481633]     Ответить | Цитировать Сообщить модератору
 Re: Не проходит UPDATE запрос  [new]
MGR
Member

Откуда:
Сообщений: 536
Так написана же причина!
20 апр 05, 10:54    [1481646]     Ответить | Цитировать Сообщить модератору
 Re: Не проходит UPDATE запрос  [new]
MySQLdb
Member

Откуда:
Сообщений: 438
Гавриленко Сергей Алексеевич
Ну так, imho, в тексте сообщения об ошибке все четко и ясно написано.


А что это означает ??? , я не могу понять, хоть и написано все четко...

Может поясните ????
20 апр 05, 11:03    [1481695]     Ответить | Цитировать Сообщить модератору
 Re: Не проходит UPDATE запрос  [new]
MySQLdb
Member

Откуда:
Сообщений: 438
MGR
Так написана же причина!


И что это за кластеризованные индексы, где они ???
20 апр 05, 11:05    [1481703]     Ответить | Цитировать Сообщить модератору
 Re: Не проходит UPDATE запрос  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37103
MySQLdb
Гавриленко Сергей Алексеевич
Ну так, imho, в тексте сообщения об ошибке все четко и ясно написано.


А что это означает ??? , я не могу понять, хоть и написано все четко...

Может поясните ????

Написано, что нельзя апдейтить блобы и ключ в одном запросе ( зачем апдейтить ключ, вобще неясно ). Вывод - апдейтите в двух запросах.
20 апр 05, 11:05    [1481704]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить