sql-声明的问题

sql-声明的问题,sql,declare,Sql,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, VatIdC

我真的不知道这里出了什么问题

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

问题是。。。有什么想法或解决方案吗?谢谢

从语法上看,这看起来像SQL Server。
如果是这样,这应该是可行的:

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
)    

标记您正在使用的dbms。该代码是特定于产品的。