📌  相关文章
📜  在 SQL Server 中对存储过程参数使用单引号

📅  最后修改于: 2022-05-13 01:55:33.492000             🧑  作者: Mango

在 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”的存储过程。

现在让我们使用带单引号的参数调用存储过程。

例子

EXEC GeekTest 'GeeksforGeeks'

输出

Result
GeeksforGeeks

我们可以看到它会给出与之前的输出相同的输出。

2. 让我们创建一个名为“ProcTest”的存储过程。

现在让我们使用带单引号的参数调用存储过程。

例子

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.