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


««12

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

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 31.03.2008 16:02
Сообщ.: 693, Visits: 7 080
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 240, Visits: 65 445
Евгений, зачем вы приклеиваете значение @WhereValue к запросу? Мы же уже разбрались что ее надо передавать как параметр! Смотрите примеры выше.
Сообщ. #907370
13.11.2006 17:17
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

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

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

Supreme Being

модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240, 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: 31.03.2008 16:02
Сообщ.: 693, Visits: 7 080
Все работает!

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