Использование одинарных кавычек для параметров хранимых процедур в SQL Server

Опубликовано: 30 Ноября, 2021

Всякий раз, когда какое-либо значение передается в переменную или столбец символьного типа данных, строковое значение заключено в одинарные кавычки (”), в противном случае это произойдет из-за ошибки. Ниже мы обсудим эту функцию (использование одинарных кавычек для параметров хранимых процедур в SQL Server) SQL Server.

Пример 1:

 ОБЪЯВИТЬ @inp VARCHAR (100)
НАБОР @inp = 'GeeksforGeeks'
ВЫБЕРИТЕ @inp как результат

Выход:

Результат
GeeksforGeeks

Пример 2:

 ОБЪЯВИТЬ @var VARCHAR (100)
НАБОР @var = 'LearningSQL'
ВЫБЕРИТЕ @var AS Результат

Выход:

Результат
LearningSQL

Теперь давайте запустим следующий запрос без одинарных кавычек вокруг переменной.

Пример 1:

 ОБЪЯВИТЬ @inp VARCHAR (100)
НАБОР @inp = GeeksforGeeks
ВЫБЕРИТЕ @inp как результат

Выход

 Сообщение 107, уровень 6, состояние 1, строка 2
Недопустимое имя столбца GeeksforGeeks.

Пример 2:

 ОБЪЯВИТЬ @var VARCHAR (100)
НАБОР @var = LearningSQL
ВЫБЕРИТЕ @var AS Результат

Выход

 Сообщение 207, уровень 7, состояние 1, строка 2
Недопустимое имя столбца LearningSQL.

Из приведенного выше примера видно, что мы должны использовать одинарные кавычки вокруг переменной.

Теперь давайте воспользуемся тем же примером с хранимая процедура .

1. Давайте создадим хранимую процедуру с именем GeekTest.

CREATE PROCEDURE GeekTest (@Inp VARCHAR(100))

AS

SELECT @Inp AS Result

GO

Теперь вызовем хранимую процедуру с параметром в одинарных кавычках.

Пример

 EXEC GeekTest 'GeeksforGeeks'

Выход

Результат
GeeksforGeeks

Мы могли видеть, что он даст тот же результат, что и раньше.

2. Давайте создадим хранимую процедуру с именем ProcTest.

CREATE PROCEDURE ProcTest (@Var VARCHAR(100))

AS

SELECT @Var AS Result

GO

Теперь вызовем хранимую процедуру с параметром в одинарных кавычках.

Пример

 EXEC ProcTest 'LearningSQL'

Выход

Результат
LearningSQL

Мы могли видеть, что он даст тот же результат, что и раньше.

Теперь давайте проверим функцию SQL и запустим ту же хранимую процедуру без одинарных кавычек.

Пример

 EXEC GeekTest GeeksforGeeks

Выход

Результат
GeeksforGeeks

Пример

 EXEC ProcTest LearningSQL

Выход

Результат
LearningSQL

Заключение :

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

Примечание. Если в строковом значении есть пробел, будет выдана ошибка недопустимого имени столбца.

Пример 1:

EXEC GeekTest Geeksfor вундеркиндов

Выход

 Сообщение 107, уровень 8, состояние 2, строка 1
Неверное имя столбца.

Пример 2:

EXEC ProcTest Обучение SQL

Выход

 Сообщение 207, уровень 9, состояние 2, строка 1
Неверное имя столбца.