2017-05-10 6 views
-1

に問題..SQL - 私は真剣に、ここで何が間違っている見当がつかない宣言

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 

問題が宣言...任意のアイデアやソリューションですか?ありがとう!

+1

あなたが使用しているDBMSにタグを付けます。そのコードは製品固有です。 – jarlh

答えて

1

構文から判断すると、これは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 
)  
関連する問題