Benim için çalışmıyor.
Benim durumumda, tablo değerli kullanıcı tanımlı bir işlevin RETURN deyiminde CTE değeri kullanıyorum. RETURN yan tümcesini BEGIN-END'te kopyalarsam, aynı hata iletisini alıyorum, ancak çıplak bir RETURN() deyimi tamam çalışıyor. Bu durumda hata mesajının yanlış olduğuna inanıyorum. ,
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
aynı çok SQL Server 2008 birleştirme deyimini için de geçerli - bu ** zorunluluk ** noktalı virgül ile sona erdirilebilir! –
gbn, gizemi kurtardın. Delphi'de bir sorgu bileşeni üzerinde bu hatayı alıyorum, güdük! Tekrar teşekkürler. Ve sen Duncan. –