-1

I have seriously no idea what is wrong here..

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

The problem is declare... Any ideas or solutions? Thanks!

1 Answers1

1

Judging from the syntax, this looks like SQL Server to me.
If so, this should work:

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
)    
Zohar Peled
  • 79,642
  • 10
  • 69
  • 121