CREATE FUNCTION [dbo].[GET_UDC]
(
@P01_DB varchar(6),
    @P02_SYSTEMCODE varchar(4),
    @P03_REASONTYPE varchar(2),
    @P04_KEY varchar(10)
)
--RETURNS INT
AS
BEGINreturn (select drdl01 from dbo.f0005
where drsy = rtrim(ltrim(@P02_SYSTEMCODE)) and drrt = rtrim(ltrim(@P03_REASONTYPE)) and rtrim(ltrim(drky)) = rtrim(ltrim(@P04_KEY)))END执行报错:
消息 156,级别 15,状态 1,过程 GET_UDC,第 9 行
关键字 'AS' 附近有语法错误。
消息 178,级别 15,状态 1,过程 GET_UDC,第 12 行
在此上下文中不能使用带有返回值的 RETURN 语句。

解决方案 »

  1.   

    --RETURNS INT
    为何要把这句注释掉?
      

  2.   

    去掉注释执行成功。
    注释掉“RETURNS INT” 报错:
    Msg 156, Level 15, State 1, Procedure GET_UDC, Line 9
    关键字 'AS' 附近有语法错误。
    Msg 178, Level 15, State 1, Procedure GET_UDC, Line 12
    在此上下文中不能使用带有返回值的 RETURN 语句。

      

  3.   


    return (select drdl01 from dbo.f0005
    where drsy = rtrim(ltrim(@P02_SYSTEMCODE)) and drrt = rtrim(ltrim(@P03_REASONTYPE)) and rtrim(ltrim(drky)) = rtrim(ltrim(@P04_KEY)))
    改成select drdl01 from dbo.f0005
    where drsy = rtrim(ltrim(@P02_SYSTEMCODE)) and drrt = rtrim(ltrim(@P03_REASONTYPE)) and rtrim(ltrim(drky)) = rtrim(ltrim(@P04_KEY))
      

  4.   

    as 
    后面要加上begin,当然后面也要有end了。
      

  5.   


    CREATE FUNCTION [dbo].[GET_UDC]
    (
        @P01_DB varchar(6),
        @P02_SYSTEMCODE varchar(4),
        @P03_REASONTYPE varchar(2),
        @P04_KEY varchar(10)
    )
    RETURNS INT
    AS
    BEGINreturn (select drdl01 from dbo.f0005
    where drsy = rtrim(ltrim(@P02_SYSTEMCODE)) and drrt = rtrim(ltrim(@P03_REASONTYPE)) and rtrim(ltrim(drky)) = rtrim(ltrim(@P04_KEY)))END