![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » MSFT SQL Server - ошибка типа данных (tinyint и text) при записи содержимого поля в переменную |
|
MSFT SQL Server - ошибка типа данных (tinyint и text) при записи содержимого поля в переменную
|
Пользователь Сообщения: 101 |
БД под SQL2000. Столкнулся с такой проблемой.
Записываю в переменные поля с различными типами данных из одной таблицы - varchar, tinyint, text DECLARE @S1 varchar(200) DECLARE @S2 tinyint(1) DECLARE @S3 tinyint(1) DECLARE @S4 text(16) DECLARE @S5 varchar(300) DECLARE @S6 tinyint(1) SELECT @S1 = NAME1 FROM LUT.dbo.NAME WHERE nID = 10 SELECT @S2 = NAME2 FROM LUT.dbo.NAME WHERE nID = 27 и т.д. С типом varchar всё нормально, а tinyint и text не проходят. При выполнении скрипта в EM получаю: Server: Msg 2716, Level 16, State 1, Line 1 Column or parameter #-2: Cannot specify a column width on data type tinyint. Server: Msg 2716, Level 16, State 1, Line 1 Column or parameter #-3: Cannot specify a column width on data type tinyint. Server: Msg 2716, Level 16, State 1, Line 1 Column or parameter #-4: Cannot specify a column width on data type text. Server: Msg 2716, Level 16, State 1, Line 1 Column or parameter #-6: Cannot specify a column width on data type tinyint. Parameter '@S2' has an invalid data type. Parameter '@S3' has an invalid data type. Parameter '@S4' has an invalid data type. Parameter '@S6' has an invalid data type. Типы данных взяты из EM (таблица->свойства) и соответствуют тому что задал разработчик. Если в EM запустить парсер, то он выдаёт что команда комплит саксесфул. В чём может быть проблема? |
|
Отправлено: 15:12, 11-10-2008 |
Ветеран Сообщения: 5624
|
Профиль | Отправить PM | Цитировать блин, щас сделаю ваши типы и проверю....
а проблема то совершенно в другом! http://www.sql-server-helper.com/err.../msg-2739.aspx В этой ссылке все описано ![]() Вот готовый код: DECLARE @S1 varchar(200) DECLARE @S2 tinyint DECLARE @S3 tinyint DECLARE @S4 varchar(8000) DECLARE @S5 varchar(300) DECLARE @S6 tinyint delete from table2 SELECT @S1 = NAME1 FROM Table1 WHERE nID = 2 SELECT @S2 = NAME2 FROM Table1 WHERE nID = 2 SELECT @S3 = NAME3 FROM Table1 WHERE nID = 2 SELECT @S4 = CAST([NAME4] AS VARCHAR(8000)) FROM Table1 WHERE nID = 2 SELECT @S5 = NAME5 FROM Table1 WHERE nID = 2 SELECT @S6 = NAME6 FROM Table1 WHERE nID = 2 INSERT INTO Table2 (NAME1, NAME6 ) VALUES (@S1, @S6) select * from table1 select * from table2 update table2 set name2=@S2, name3=@s3, name4=@s4, name5=@s5 where table2.nid=(select max(nid) from table2) select * from table2 |
------- Отправлено: 01:23, 21-10-2008 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 101
|
Профиль | Отправить PM | Цитировать Очень интересно! Спасибо.
|
Отправлено: 23:19, 22-10-2008 | #12 |
Ветеран Сообщения: 5624
|
Профиль | Отправить PM | Цитировать В моем примере необходимо помнить, что данные обновляются во второй таблице в строку с максимальным nID, и чтобы случайно не обновилась другая запись(вдруг одновременно двое нажмут), необходимо все делать в пределах одной транзакции, т.е. перед началом всего запустить транзакцию, а после всех действий подтвердить.
|
------- Отправлено: 02:21, 23-10-2008 | #13 |
Пользователь Сообщения: 101
|
Профиль | Отправить PM | Цитировать Всё работает, всё замечательно.
Но если VARCHAR(8000) недостаточно. Как установить больший размер переменной? |
Отправлено: 23:41, 10-12-2008 | #14 |
Ветеран Сообщения: 5624
|
Профиль | Отправить PM | Цитировать А это в той же ссылке: A third option is to use the READTEXT, WRITETEXT and UPDATETEXT Transact-SQL statements together with the TEXTPTR function to manipulate text, ntext and image columns in a table. You can refer to Books Online regarding these Transact-SQL statements and functions for more information.
|
------- Отправлено: 01:14, 11-12-2008 | #15 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
[решено] Ошибка данных CRC при записи на Dvd-rw Sony | SERGIO | Оптические приводы | 11 | 02-12-2007 08:44 | |
Ошибка при записи DVD | 1Space | Программное обеспечение Linux и FreeBSD | 4 | 26-01-2007 22:15 | |
Предотвращение выполнения данных при запуске апплета Учетные записи пользователей | WChek | Microsoft Windows 2000/XP | 6 | 16-06-2006 12:05 | |
Ошибка при записи на стример | kazarkin | Общий по Linux | 6 | 18-03-2005 17:50 | |
Размер поля Text | pauluss | Вебмастеру | 3 | 04-03-2004 22:54 |
|