Search code examples
sqldeclare

sql - problems with declare


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!


Solution

  • 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
    )