【问题标题】:Table valued parameter error parameter or variable has an invalid datatype表值参数错误参数或变量的数据类型无效
【发布时间】:2015-03-13 12:22:56
【问题描述】:
//Table valued parameter creation
CREATE TYPE [dbo].[tblFactIds] AS TABLE(
[FactId] [int] NULL
//using TVP in SP,just declaring a var of type TVP which i created
DECLARE @FactIds As tblFactIds;//error: parameter or variable has an invalid datatype //tried by adding READONLY also
INSERT INTO @FactIds (FactId)
 SELECT * FROM Sampletable

得到的错误:必须声明表变量@FactIds 请帮我解决这个问题。

【问题讨论】:

    标签: sql-server sql-server-2008 c#-4.0 table-valued-parameters


    【解决方案1】:

    这是

    CREATE TYPE [dbo].[tblFactIds] AS TABLE
    (
        [FactId] [int] NULL
    )
    

    看到结尾)了吗?它创建了一个类型。您只使用一次,类型“保留”(如表格或视图)

    你必须在声明之前执行它

    或者你可以在中间加上GO

    CREATE TYPE [dbo].[tblFactIds] AS TABLE
    (
        [FactId] [int] NULL
    )
    
    GO
    
    DECLARE @FactIds As [dbo].[tblFactIds]
    

    这样CREATE TYPE就会被执行。

    【讨论】:

    • @Annem 重要提示:只运行DECLARE TYPE,然后运行查询的其他部分
    • 我以类似的方式创建了 TVP,但在发布问题时它错过了大括号
    • TVP 已经创建并在 SP 中使用它,只需将变量声明为 TVP 数据类型
    • @Annem 各种可能...您使用的默认架构不是dbo,您创建的类型不在dbo 架构中,没有[dbo].[tblFactIds]。对于最后两个,检查 SQL Management Studio,Programmability->Types->User-Defined Table Types
    • 检查了它附加 dbo 的架构。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多