2017-05-10 8 views
-1

Ich habe ernsthaft keine Ahnung, was hier falsch ist ..SQL - Probleme mit declare

USE [PRR_NEW] 
DROP FUNCTION [dbo].[fA_20] 
GO 
CREATE FUNCTION [dbo].[fA_20] 
( 
    @Id bigint = 10 
) 
RETURNS TABLE 
AS 
RETURN 
(
declare @m table 
(
    VatIdGA nvarchar(16), 
    VatIdCAT nvarchar(16) 
); 
insert into @m (VatIdGA, VatIdCAT) values(9, 8) 
insert into @m (VatIdGA, VatIdCAT) values(11, 3) 
insert into @m (VatIdGA, VatIdCAT) values(10, 5) 
insert into @m (VatIdGA, VatIdCAT) values(5, 9) 

select vr.*, m.VatIdGA 
    from VatRate as vr 
    left outer join @m as m on m.VatIdCAT = vr.Id 

Das Problem ist, zu erklären ... Irgendwelche Ideen oder Lösungen? Vielen Dank!

+1

Tag die dbms Sie verwenden. Dieser Code ist produktspezifisch. – jarlh

Antwort

1

Nach der Syntax zu urteilen, sieht dies für mich wie SQL Server aus.
Wenn ja, sollte dies funktionieren:

CREATE FUNCTION [dbo].[fA_20] 
( 
    @Id bigint = 10 
) 
RETURNS TABLE 
AS 

RETURN 
(
    with m as 
    (
     select VatIdGA, VatIdCAT 
     FROM (values(9, 8), (11, 3), (10, 5), (5, 9)) v(VatIdGA, VatIdCAT) 
    ) 
    select vr.*, m.VatIdGA 
    from VatRate as vr 
    left outer join m on m.VatIdCAT = vr.Id 
)