【问题标题】:How to use SQL Server Management studio - "Execute Stored Procedure" for User Defined Table Types?如何使用 SQL Server Management Studio - 用户定义表类型的“执行存储过程”?
【发布时间】:2013-07-17 14:16:13
【问题描述】:

我正在尝试在 SQL Server Management Studio 2012 中右键单击一个存储过程,并尝试执行一个接受 tblType_XXX 类型的单个参数(即 User Defined Table Type)的存储过程。但是当我尝试传递一个值时,我得到了这个错误

Msg 206, Level 16, State 2, Procedure uspGetXXXXXXXX, Line 0
Operand type clash: int is incompatible with tblType_XXX

如何在 SQL Server Management Studio -> 从 UI 执行存储过程 中指定 tblType_XXX 类型的参数?

tblType_XXX 仅包含一列 int 类型的列

【问题讨论】:

  • 嗨,Rwiti,您找到解决此问题的方法了吗?我在同一条船上。如果有,请分享您的解决方案。
  • 你不能从 SSMS 中做到这一点,但 @Serg 提供的解决方案是应该如何做到的。

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


【解决方案1】:

你需要声明表变量,如果需要的话插入数据,调用你的存储过程不使用@parameter = 1格式:

DECLARE @return_value int,
        @tblParameter tblType_XXX

INSERT INTO @tblParameter VALUES (1)

EXEC    @return_value = [dbo].[uspGetXXXXXXXX]
        @tblParameter

【讨论】:

  • 是的,我可以做到。但我的问题是,我是否可以使用 Management Studio 来执行此操作而不是编写脚本。
  • SSMS 为您制作脚本模板,您可以调整它添加声明行和注释/删除参数名称。因为我通常会调整自动生成的脚本,所以我是这样回答的。很抱歉造成误解。
  • 好的..虽然我知道这个..但是因为我没有其他答案..+1
  • 说实话,我应该改变我的答案。至于现在,我认为 SSMS 除了= 之外什么都不能生成,但我没有确凿的证据。而= 仅适用于分配另一个表变量,该变量应在过程执行上方的某处声明。
猜你喜欢
  • 1970-01-01
  • 2012-04-04
  • 2021-11-12
  • 1970-01-01
  • 2021-11-04
  • 2015-08-07
  • 1970-01-01
  • 2019-09-24
相关资源
最近更新 更多