【问题标题】:Invalid column name for table type parameter表类型参数的列名无效
【发布时间】:2017-10-24 08:41:00
【问题描述】:

我有一个表类型,它在存储过程中用于过滤掉值。

CREATE TYPE PackageIdType AS TABLE   
( 
     PackageId VARCHAR(150)  
);  

我的存储过程是这样的:

CREATE PROCEDURE [dbo].[spLocalGetValuesFromTable]    
     @RundateStart datetime,
     @RundateEnd datetime,
     @CreationIds PackageIdType READONLY  
AS
     SELECT * 
     FROM MYTABLE 
     WHERE date BETWEEN @RundateStart AND @RundateEnd 
       AND Ids IN (@CreationIds)

但是当我运行这个得到错误:

消息 207,级别 16,状态 1,过程 spLocalGetValuesFromTable,行 --[批处理开始行 0]
列名“@CreationIds”无效

【问题讨论】:

    标签: sql sql-server-2008 stored-procedures ssrs-2008


    【解决方案1】:

    这是一张表格,所以正确的语法应该是

    SELECT *
    FROM  MYTABLE
    WHERE date Between @RundateStart And @RundateEnd 
      AND Ids in (SELECT PackageId FROM @CreationIds)
    

    这假定表@CreationIds 中的每一行都是一个ID,可以映射到与MYTABLE 中的Ids 相同的类型。

    【讨论】:

      猜你喜欢
      • 2018-12-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-02
      • 2012-08-18
      • 2013-09-22
      • 1970-01-01
      • 1970-01-01
      • 2016-03-12
      相关资源
      最近更新 更多