&引用;靠近'的语法不正确;返回';。期待作为、为或与一起;(SQL用户定义函数)

&引用;靠近'的语法不正确;返回';。期待作为、为或与一起;(SQL用户定义函数),sql,sql-server,Sql,Sql Server,请查看下面的SQL代码,了解我正在尝试创建的用户定义函数。在SSMS中,这部分代码似乎存在问题: RETURNS VARCHAR(50) 我收到错误消息: “RETURNS”附近的语法不正确。期待作为、为或与 SQL: 在存储过程中,RETURN语句用于立即退出,并且只能(可选)返回表示状态代码的整数表达式。如果未指定整数,则返回值0(成功)。要返回varchar(50)值,您的选项如下 您可以使用标量函数返回单个值 存储过程可以使用OUT关键字设置参数列表中声明的输出参数,如下所示: CR

请查看下面的SQL代码,了解我正在尝试创建的用户定义函数。在SSMS中,这部分代码似乎存在问题:

 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)