2017-05-10 17 views
-1

문제 I가 여기에 어떤 문제가 있는지 심각하게 아무 생각이 ..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 
)