Проблема в названии поля
Релиб
Форумы       Участники    Календарь    Кто он-лайн?
Добро пожаловать, гость ( Вход | Регистрация )
        


««12

Проблема в названии поля Expand / Collapse
Автор
Сообщение
13.11.2006 16:32
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 21.04.2009 16:25
Сообщ.: 701, Visits: 7 101
SOS!!! SOS!!! SOS!!!

Ребята, выручайте! Завтра утром передаем в эксплуатацию, а у меня эта процедура не фурычит. Проблема была в том что надо ставить по три одинарных кавычки в выделеном красным месте. Но в результате я вернулся к тому же результату - как только @WhereValue содержит одиночную кавычку - все летит к черту!!!

SET @sSQL = 'SELECT @Turn = ' + @FieldValue +

' FROM ' + @TableName

+ ' WHERE LTRIM(' + @FieldText + ') = ''' + @WhereValue +

''' ORDER BY ' + @FieldText;

print @sSQL;

--exec sp_executesql @sSQL, N'@Turn nvarchar(100) out', @Turn=@Turn out

exec sp_executesql @sSQL, N'@WhereValue nvarchar(100), @Turn nvarchar(100) out', @WhereValue=@WhereValue, @Turn=@Turn out

Print '@Turn=' + @Turn

SELECT @Turn

Спасибо!
Евгений Боуден

Сообщ. #907365
13.11.2006 16:45


Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

модератор
Last Login: 29.10.2007 14:45
Сообщ.: 1 833, Visits: 16 863
Естественно!

Я для чего тебе сказал PRINT использовать? Наверное, чтобы посомтреть, что в строке в этой.

Делай Replace одной кавычки на две.

Сообщ. #907369
13.11.2006 16:46
Supreme Being

Supreme Being

модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 234, Visits: 65 445
Евгений, зачем вы приклеиваете значение @WhereValue к запросу? Мы же уже разбрались что ее надо передавать как параметр! Смотрите примеры выше.
Сообщ. #907370
13.11.2006 17:17
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 21.04.2009 16:25
Сообщ.: 701, Visits: 7 101
В тех примерах путаница в кавычках. Буду очень признателен, если вы, baszile, напишете это правильно. У меня не получилось. Извиняюсь за безграмотность, но без вашей помощи не обойтись.

Спасибо!
Евгений Боуден
Сообщ. #907378
13.11.2006 17:59
Supreme Being

Supreme Being

модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 234, Visits: 65 445
Вот так все должно заработать:

SET @sSQL = 'SELECT @Turn = ' + @FieldValue +
  ' FROM ' + @TableName + ' WHERE LTRIM(' + @FieldText + ') = @WhereValue ' +
  ' ORDER BY ' + @FieldText
EXEC sp_executesql @sSQL, N'@WhereValue nvarchar(100), @Turn nvarchar(100) out', @WhereValue=@WhereValue, @Turn=@Turn out
SELECT @Turn

Я проверил у себя аналогичный пример, одинарные кавычки передаются без проблем.

Сообщ. #907379
13.11.2006 21:19


Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 27.03.2008 15:26
Сообщ.: 701, Visits: 7 028
Я вместо кавычек подставляю по тексту CHR(34) или CHR(39)

Например

select @sql = ' select * from table where param = ' + chr(34) + @value + chr(34)

print @sql

Сообщ. #907389
13.11.2006 22:51


Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

модератор
Last Login: 29.10.2007 14:45
Сообщ.: 1 833, Visits: 16 863
2Silver: Да ты извращенец :) По-моему значительно проще вместо этого просто дублировать просто кавычку... и все...
Сообщ. #907402
14.11.2006 9:28
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 21.04.2009 16:25
Сообщ.: 701, Visits: 7 101
Все работает!

Спасибо!
Евгений Боуден
Сообщ. #907424
14.11.2006 21:30
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 21.04.2009 16:25
Сообщ.: 701, Visits: 7 101
Так все-таки, где можно почитать теорию (на русском языке) на обсуждаемую тему. А конкретно по команде

EXEC sp_executesql @sSQL, N'@WhereValue nvarchar(100), @Turn nvarchar(100) out', @WhereValue=@WhereValue, @Turn=@Turn out


Спасибо!
Евгений Боуден

Сообщ. #907488
15.11.2006 11:20
Supreme Being

Supreme Being

модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 234, Visits: 65 445
По русски в онлайне пожалуй что нигде. Ни у кого нет желания пересказывать документацию - sp_executesql.
Сообщ. #907500
15.11.2006 11:47


Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

модератор
Last Login: 29.10.2007 14:45
Сообщ.: 1 833, Visits: 16 863
Прошу прощения, а что, Books Online (BOL) кто-то отменил?

Мало того, BOL для 2005 сервера есть и на русском языке (ищите на www.sql.ru)!

Сообщ. #907504
« пред. тема | след. тема »

««12

Эту тему читают Expand / Collapse
Посетители: 0 (0 гостей, 0 участников, 0 скрыт.участников)
Сейчас нет участников, просматривающих тему.

Время GMT +3:00, Сейчас 10:26