Search code examples
sqlt-sqlsql-server-2014

SQL what is wrong with this syntax? BEGIN...IF...RETURN


Below is a excerpt from a function. I keep getting a syntax error

Incorrect syntax near the keyword 'RETURN'

My code:

CREATE FUNCTION dbo.convttxt (@mhtztxt VARCHAR(MAX))
RETURNS FLOAT
AS
BEGIN
    DECLARE @mhtz FLOAT 

    IF (ISNUMERIC(LTRIM(RTRIM(@mhtztxt)))
        RETURN CONVERT(FLOAT, LTRIM(RTRIM(@mhtztxt))) 

    SET @mhtz = (SELECT 
                     REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE([COL1], 'xyz', 0)              
              ,'<Enter Text Here>', 0)
              ,'<Enter Text Here>', 0)
              ,'<Enter Text Here>', 0)
              ,'<Enter Text Here>', 0)
              ,'<Enter Text Here>', 0)
              ,'<Enter Text Here>', 0)
              ,'<Enter Text Here>', 0) 

                 FROM dbo.table1)

    RETURN @mhtz
END

Solution

  • but the replace logic is still missing ;-)

    CREATE FUNCTION dbo.convttxt (@mhtztxt VARCHAR(MAX))
    RETURNS FLOAT
    AS
    BEGIN
        DECLARE @mhtz FLOAT 
    
        IF ISNUMERIC(LTRIM(RTRIM(@mhtztxt))) = 1 
           SET @mhtz = CONVERT(FLOAT, LTRIM(RTRIM(@mhtztxt))) 
        ELSE
        SELECT @mhtz = 
                         REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(name, 'xyz', 0)              
                  ,'<Enter Text Here>', 0)
                  ,'<Enter Text Here>', 0)
                  ,'<Enter Text Here>', 0)
                  ,'<Enter Text Here>', 0)
                  ,'<Enter Text Here>', 0)
                  ,'<Enter Text Here>', 0)
                  ,'<Enter Text Here>', 0) 
    
                     FROM sys.all_objects
        ;
    
        RETURN @mhtz
    END