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

Откуда: Москва
Сообщений: 185
как в переменную nvarchar в SQL передать кавычки??

Имеем хранимую процедуру,которая успешно компилируется:

ALTER PROCEDURE [dbo].[ChekingIsHasAlredyThisValueInThisTable] 
	-- Add the parameters for the stored procedure here
	@NameTable nvarchar(max),
	@NameField nvarchar(max) , 
	@ChekingValue nvarchar(max) 
AS
BEGIN
         DECLARE  @textCommand nvarchar(max) 
	
	SET @textCommand = ' SELECT * FROM  ' + @NameTable + ' WHERE ' + @NameField + ' = "' + @ChekingValue + '"'
	
	EXEC ( @textCommand )
	
END


Если запускаем её:
DECLARE	@return_value int

EXEC	@return_value = [dbo].[ChekingIsHasAlredyThisValueInThisTable]
		@NameTable = N'Пользователь',
		@NameField = N'Логин',
		@ChekingValue = N'Elena'

SELECT	'Return Value' = @return_value

GO

то выдаётся ошибка:
Сообщение 207, уровень 16, состояние 1, строка 1
Недопустимое имя столбца "Elena".

(строк обработано: 1)

как можно избавиться от этой ошибки?
7 апр 14, 11:50    [15842308]     Ответить | Цитировать Сообщить модератору
 Re: как в переменную nvarchar в SQL передать кавычки??  [new]
Chippollino.01
Member

Откуда: изнемагаю
Сообщений: 35527
поставить апостроф два раза

SET @textCommand = ' SELECT * FROM  ' + @NameTable + ' WHERE ' + @NameField + ' = ''' + @ChekingValue + ''''
7 апр 14, 11:53    [15842332]     Ответить | Цитировать Сообщить модератору
 Re: как в переменную nvarchar в SQL передать кавычки??  [new]
Кавказ-сила
Member

Откуда: Москва
Сообщений: 261
DECLARE	@return_value int

EXEC	@return_value = [dbo].[ChekingIsHasAlredyThisValueInThisTable]
		@NameTable = N'Пользователь',
		@NameField = N'Логин',
		@ChekingValue = N'McDonald''s'

SELECT	'Return Value' = @return_value

GO
7 апр 14, 11:56    [15842362]     Ответить | Цитировать Сообщить модератору
 Re: как в переменную nvarchar в SQL передать кавычки??  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
автор
@NameTable = N'
@NameField = N'Логин',
@ChekingValue = N'Elena'
' SELECT * FROM ' + @NameTable + ' WHERE ' + @NameField + ' = "' + @ChekingValue + '"'

Для таких целей лучше свести данные в одну таблицу.
7 апр 14, 11:58    [15842370]     Ответить | Цитировать Сообщить модератору
 Re: как в переменную nvarchar в SQL передать кавычки??  [new]
o-o
Guest
Кавказ-сила
DECLARE	@return_value int

EXEC	@return_value = [dbo].[ChekingIsHasAlredyThisValueInThisTable]
		@NameTable = N'Пользователь',
		@NameField = N'Логин',
		@ChekingValue = N'McDonald''s'

SELECT	'Return Value' = @return_value

GO

чего уж мелочиться:
DECLARE	@return_value int

EXEC	@return_value = [dbo].[ChekingIsHasAlredyThisValueInThisTable]
		@NameTable = N'just_a_table; drop table dbo.important_table --',
		@NameField = N'uzhe_nevazhno',
		@ChekingValue = N'...'

SELECT	'Return Value' = @return_value
7 апр 14, 12:11    [15842471]     Ответить | Цитировать Сообщить модератору
 Re: как в переменную nvarchar в SQL передать кавычки??  [new]
Кавказ-сила
Member

Откуда: Москва
Сообщений: 261
7 апр 14, 12:14    [15842500]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить