Если это табличная функция (возвращает таблицу), вы должны вызывать ее следующим образом
select <fields> from dbo.name(<parameters>)
Также функции rtrim работают не так, как вы хотите, они ожидают один аргумент и затемудаляет все пробелы справа от строки
Вам также не хватает пары BEGIN в условиях, вызывающих RTRIM, или вы также можете удалить Ends.
If (Len(@append) < 40)
BEGIN
SET @FULLNAME1 = RTrim(@FULLNAME1, '/');
End
If ((Len(@append) > 40) And (Len(@append) < 80))
BEGIN
SET @FULLNAME2 = RTrim(@FULLNAME2, '/');
End
Я посмотрелв вашей функции и в цикле while есть несколько странных вещей, есть участки кода, которые никогда не будут выполнены, я пытался переписать эквивалентную функцию, надеюсь, это поможет вам
CREATE FUNCTION dbo.names(@CUSTID varchar(20),@effdt datetime)
RETURNS @results TABLE (Name1 nvarchar(254), Name2 nvarchar(254))
AS
BEGIN
DECLARE rCursor CURSOR FOR
SELECT (C.NAME1) AS name
FROM PS_ARB_CU_CLST_STN AS A , PS_ARB_CU_STATIONS AS C
WHERE A.EFF_STATUS = 'A' AND
A.EFFDT = (
SELECT MAX(B.EFFDT)
FROM PS_ARB_CU_CLST_STN AS B
WHERE A.SETID = B.SETID AND
A.CUST_ID = B.CUST_ID AND
B.EFFDT <= @effdt
) AND
A.SETID = C.SETID AND
A.ARB_STATION_ID = C.CUST_ID AND
A.CUST_ID = @CUSTID AND
C.EFFDT = (
SELECT MAX(D.EFFDT)
FROM PS_ARB_CU_STATIONS D
WHERE C.CUST_ID = D.CUST_ID AND
D.SETID = C.SETID AND
D.EFFDT <= @effdt
)
ORDER BY A.SEQ_NBR
DECLARE @name nvarchar(254),
@fullname1 nvarchar(128),
@fullname2 nvarchar(128),
@append NVARCHAR (254);
SET @fullname1 = '';
SET @fullname2 = '';
SET @append = ''
OPEN rCursor;
FETCH NEXT FROM rCursor INTO @name
WHILE @@FETCH_STATUS = 0 AND LEN(@fullname1 + @name) < 40
BEGIN
SET @fullname1 = @fullname1 + '/' + @name
FETCH NEXT FROM rCursor INTO @name
END
WHILE @@FETCH_STATUS = 0 AND LEN(@fullname2 + @name) < 40
BEGIN
SET @fullname2 = @fullname2 + '/' + @name;
FETCH NEXT FROM rCursor INTO @name;
END
--Append is not used
WHILE @@FETCH_STATUS = 0
BEGIN
SET @append = @append + '/' + @name;
FETCH NEXT FROM rCursor INTO @name;
END
CLOSE rCursor;
DEALLOCATE rCursor;
INSERT INTO @results VALUES (@fullname1, @fullname2)
RETURN
END
GO