在 SQL Server 中对存储过程参数使用单引号
每当将任何值传递给字符数据类型的变量或列时,字符串值周围都有单引号(”),否则会出错。下面我们将讨论 SQL Server 的这个特性(在 SQL Server 中对存储过程参数使用单引号)。
示例 1:
DECLARE @inp VARCHAR(100)
SET @inp = 'GeeksforGeeks'
SELECT @inp AS Result
输出:Result GeeksforGeeks
示例 2:
DECLARE @var VARCHAR(100)
SET @var = 'LearningSQL'
SELECT @var AS Result
输出:Result LearningSQL
现在让我们运行以下查询,变量周围没有单引号。
示例 1:
DECLARE @inp VARCHAR(100)
SET @inp = GeeksforGeeks
SELECT @inp AS Result
输出
Msg 107, Level 6, State 1, Line 2
Invalid column name GeeksforGeeks.
示例 2:
DECLARE @var VARCHAR(100)
SET @var = LearningSQL
SELECT @var AS Result
输出
Msg 207, Level 7, State 1, Line 2
Invalid column name LearningSQL.
从上面的例子可以看出,我们必须在变量周围使用单引号。
现在让我们使用相同的例子 存储过程。
1. 让我们创建一个名为“GeekTest”的存储过程。
CREATE PROCEDURE GeekTest (@Inp VARCHAR(100))
AS
SELECT @Inp AS Result
GO
现在让我们使用带单引号的参数调用存储过程。
例子
EXEC GeekTest 'GeeksforGeeks'
输出Result GeeksforGeeks
我们可以看到它会给出与之前的输出相同的输出。
2. 让我们创建一个名为“ProcTest”的存储过程。
CREATE PROCEDURE ProcTest (@Var VARCHAR(100))
AS
SELECT @Var AS Result
GO
现在让我们使用带单引号的参数调用存储过程。
例子
EXEC ProcTest 'LearningSQL'
输出Result LearningSQL
我们可以看到它会给出与之前的输出相同的输出。
现在,让我们验证 SQL 功能并运行没有单引号的相同存储过程。
例子
EXEC GeekTest GeeksforGeeks
输出Result GeeksforGeeks
例子
EXEC ProcTest LearningSQL
输出Result LearningSQL
结论 :
将值传递给字符数据类型的存储过程参数时,当字符串值不包含任何空格时,单引号是可选的。
注意:如果字符串值中有空格,会抛出列名无效的错误。
示例 1:
EXEC GeekTest Geeksfor Geeks
输出
Msg 107, Level 8, State 2, Line 1
Invalid column name.
示例 2:
EXEC ProcTest 学习 SQL
输出
Msg 207, Level 9, State 2, Line 1
Invalid column name.