【问题标题】:SQL Table Variable issueSQL 表变量问题
【发布时间】:2018-05-07 22:05:21
【问题描述】:

我将表变量声明为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

我的存储过程中不断出现编译错误

消息 137,级别 16,状态 1,过程 lc_PM11127_CommitmentReport_Optimize,第 80 行 [批处理开始第 9 行]
必须声明标量变量“@APTDAPCO”。

我做错了什么?

【问题讨论】:

  • 在同一个存储过程中或在同一个查询窗口中一次执行。有用吗?
  • 您必须将变量声明为表格 - 见下文

标签: sql sql-server variables


【解决方案1】:
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

【讨论】:

  • 我现在这样做了,但在插入预期附近出现语法错误(
  • 是的,你必须定义表格和字段类型 - 我会调整代码
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-04
  • 1970-01-01
  • 1970-01-01
  • 2016-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多