&引用;靠近'的语法不正确;返回';。期待作为、为或与一起;(SQL用户定义函数)
请查看下面的SQL代码,了解我正在尝试创建的用户定义函数。在SSMS中,这部分代码似乎存在问题:&引用;靠近'的语法不正确;返回';。期待作为、为或与一起;(SQL用户定义函数),sql,sql-server,Sql,Sql Server,请查看下面的SQL代码,了解我正在尝试创建的用户定义函数。在SSMS中,这部分代码似乎存在问题: RETURNS VARCHAR(50) 我收到错误消息: “RETURNS”附近的语法不正确。期待作为、为或与 SQL: 在存储过程中,RETURN语句用于立即退出,并且只能(可选)返回表示状态代码的整数表达式。如果未指定整数,则返回值0(成功)。要返回varchar(50)值,您的选项如下 您可以使用标量函数返回单个值 存储过程可以使用OUT关键字设置参数列表中声明的输出参数,如下所示: CR
RETURNS VARCHAR(50)
我收到错误消息:
“RETURNS”附近的语法不正确。期待作为、为或与
SQL:
在存储过程中,
RETURN
语句用于立即退出,并且只能(可选)返回表示状态代码的整数表达式。如果未指定整数,则返回值0(成功)。要返回varchar(50)值,您的选项如下
函数
返回单个值李>
OUT
关键字设置参数列表中声明的输出参数,如下所示:
CREATE PROCEDURE [dbo].[udfGetKillContractTreatmentMostSevere] (@paramContractCode INT, @GetMostSevereTreatment VARCHAR(50) OUT)
然后,您可以简单地设置out参数的值,它将从存储过程返回。请注意,存储过程可以有多个out参数 我认为您混淆了存储过程和函数。您可以使用输出变量从存储过程返回数据,也可以使用返回代码。返回代码将只返回通常用作状态代码的整数值。在代码中,看起来您希望使用函数而不是存储过程 请阅读以下内容以便更好地理解-
返回varchar(50)
对于存储过程无效。它们总是返回int
,并且没有语法来更改它。CREATE PROCEDURE
应该是CREATE FUNCTION
并且没有number
datatypeI使用CREATE FUNCTION
语法更新SQL,并将数据类型更改为numeric(5,0)
。这些更改解决了错误。是的,您可以在存储过程中使用return语句,但不能在位置中使用,也不能用于预期目的。此语句不正确-“您不能在存储过程中使用return语句”。请仔细检查您的理论。
CREATE PROCEDURE [dbo].[udfGetKillContractTreatmentMostSevere] (@paramContractCode INT, @GetMostSevereTreatment VARCHAR(50) OUT)