Nie działa dla mnie.
W moim przypadku używam wartości WRT w klauzuli POWRÓT funkcji zdefiniowanej przez tabelę użytkownika. Jeśli otworzę klauzulę RETURN w BEGIN-END, otrzymam ten sam komunikat o błędzie, ale nieważna klauzula RETURN() działa poprawnie. Uważam, że komunikat o błędzie jest w tym przypadku niepoprawny.
to działa:
CREATE FUNCTION [dbo].[ft_SplitStringOnChar]
(
@s varchar(8000),
@sep char(1)
)
RETURNS TABLE
AS
RETURN (
WITH Pieces(pn, start, stop) AS (
SELECT 1, 1, CHARINDEX(@sep, @s)
UNION ALL
SELECT pn + 1, stop + 1, CHARINDEX(@sep, @s, stop + 1)
FROM Pieces
WHERE stop > 0
)
SELECT pn AS TokenNumber,
SUBSTRING(@s, start, CASE WHEN stop > 0 THEN stop-start ELSE 512 END) AS TokenString
FROM Pieces
)
GO
This does not:
CREATE FUNCTION [dbo].[ft_SplitStringOnChar]
(
@s varchar(8000),
@sep char(1)
)
RETURNS TABLE
AS
BEGIN
;
RETURN (
WITH Pieces(pn, start, stop) AS (
SELECT 1, 1, CHARINDEX(@sep, @s)
UNION ALL
SELECT pn + 1, stop + 1, CHARINDEX(@sep, @s, stop + 1)
FROM Pieces
WHERE stop > 0
)
SELECT pn AS TokenNumber,
SUBSTRING(@s, start, CASE WHEN stop > 0 THEN stop-start ELSE 512 END) AS TokenString
FROM Pieces
)
END
GO
samo dotyczy oświadczenie MERGE SQL Server 2008, za - to ** ** musi być zakończone średnikiem! –
gbn, uratowałeś moją skórę. Otrzymałem ten błąd na składniku zapytania w Delphi, byłam zakłopotana! Dzięki jeszcze raz. A ty Duncan. –