将变量设置为存储过程返回值的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
。