SQL表变量问题

时间:2018-05-02 21:14:20

标签: sql sql-server variables

我声明一个表变量,因为APTDAPCO是用户定义的类型

DECLARE @APTDAPCO APTDAPCO

INSERT INTO @APTDAPCO
    SELECT 
        APTD.APCo, 
        APTD.Mth,
        APTD.APTrans,
        APTD.APLine,
        APTD.Amount, 
        APTD.PayType, 
        APTD.PaidDate,
        APCO.RetPayType
    FROM
        [Viewpoint].[dbo].[APTD] WITH (NOLOCK)
    LEFT JOIN 
        [Viewpoint].[dbo].[APCO] WITH (NOLOCK) ON [APCO].[APCo] = [APTD].[APCo]
    WHERE 
        APTD.APCo = 1

这是一个存储过程。

当我尝试在select语句中使用此表变量时

SELECT * 
FROM HQCO 
LEFT JOIN @APTDAPCO ON HQCO.CO = @APTDAPCO.APCo

我的存储过程中一直出现编译错误

  

Msg 137,Level 16,State 1,Procedure lc_PM11127_CommitmentReport_Optimize,Line 80 [Batch Start Line 9]
  必须声明标量变量" @ APTDAPCO"。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

DECLARE @APTDAPCO table
(APCO varchar(max), mth varchar(max), 
Aptrans varchar(max), apline varchar(max),
Amount  float, paytype varchar(max),
Paiddate datetime, retpaytype varchar(max))
Insert into @APTDAPCO
    Select APTD.APCo, 
    APTD.Mth,
    APTD.APTrans,
    APTD.APLine,
    APTD.Amount, 
    APTD.PayType, 
    APTD.PaidDate,
    APCO.RetPayType
    from [Viewpoint].[dbo].[APTD] WITH (NOLOCK)
    LEFT JOIN [Viewpoint].[dbo].[APCO] WITH (NOLOCK) 
    ON [APCO].[APCo] = [APTD].[APCo]
    Where APTD.APCo=1