Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将变量设置为存储过程返回值的SQL_Sql_Sql Server - Fatal编程技术网

将变量设置为存储过程返回值的SQL

将变量设置为存储过程返回值的SQL,sql,sql-server,Sql,Sql Server,我目前正在研究存储过程,我发现如果我想声明一个变量并设置一个值(来自用户定义的过程),语法如下 DECLARE @count int EXEC @count = CurrentEmployees 难道没有奇怪的语法吗?。。。我的意思是,在其他编程语言中(是的,我知道sql是一种查询而不是编程语言),您将在左侧编写变量,在右侧编写值。应该是 DECLARE @count int @count=EXEC CurrentEmployees 你知道为什么语法是这样的吗? 另外,在我的示例中,Curr

我目前正在研究存储过程,我发现如果我想声明一个变量并设置一个值(来自用户定义的过程),语法如下

DECLARE @count int
EXEC @count = CurrentEmployees
难道没有奇怪的语法吗?。。。我的意思是,在其他编程语言中(是的,我知道sql是一种查询而不是编程语言),您将在左侧编写变量,在右侧编写值。应该是

DECLARE @count int
@count=EXEC CurrentEmployees
你知道为什么语法是这样的吗?
另外,在我的示例中,CurrentEmployees是一个用户定义的过程。

存储过程返回值的目的是(零表示成功,非零表示错误/警告)。考虑到这一点,语法更有意义


使用输出变量或结果集返回数据,或者改用函数。

Google
返回值
来自SQL Server存储过程和
输出参数
@M.Ali yea我明白了这个概念……我的问题是为什么语法是这样的confusing@john…(1)并非所有人都认为语法混乱问问微软——或者老的Sybase开发者。他们是发明和使用这种语法的人。你基本上是偶然发现的;SQL不是像C#那样的编程语言,而是一种编程语言。同样,存储过程也不是像C#那样的方法或函数。现在SQL有了函数(用户定义的或其他)哪些是这样工作的(例如,
select@dt=getdate()
)。但是存储过程通常不用于返回单个值。不是说它们不能返回,但这并不是它们的真正用途。正如前面提到的,您可以使用时髦的语法获取返回值,或者如果需要返回代码以外的内容,可以使用
output