【问题标题】:Stored Procedure Variables存储过程变量
【发布时间】:2013-12-18 19:54:19
【问题描述】:

恐怕我的术语妨碍了我在互联网上找到我正在寻找的结果。无论如何,我有一个相当复杂的存储过程,我需要将几个变量传递给它。除了通过存储过程多次输入这些变量,有没有办法在过程的开头定义一个变量,并在整个过程中引用该变量? 例如

IDNumber = 1075、1050、1025

不必在整个过程中多次使用 where 子句,

其中 IDNumber = 1075 AND IDNumber = 1050 AND IDNumber = 1025

有没有办法让我在单个变量中定义这些整数,并通过存储过程传递变量?

对于伴随此问题的任何混淆,我们深表歉意,因为 SQL 对我来说是非常新的。感谢您的时间和帮助。

我使用的是 SQL Server 2008 R2。

【问题讨论】:

  • WHERE IDNumber = 1075 AND IDNumber = 1050 AND IDNumber = 1025 当然永远不会是真的。假设您的意思是 OR,那么 TVP 和 IN 就可以解决问题。

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


【解决方案1】:

是的,您想将表值参数传递给您的存储过程。阅读这篇文章:

http://www.techrepublic.com/blog/the-enterprise-cloud/passing-table-valued-parameters-in-sql-server-2008/

基本上你会定义类型:

CREATE TYPE myType AS TABLE
(                     
       [myId] int NULL
)      

然后创建一个接受该类型的存储过程:

CREATE PROCEDURE myProc
(
      @TableVariable myType READONLY
)
AS
BEGIN
...

【讨论】:

  • 今晚我会试一试,告诉你进展如何。谢谢安倍!
猜你喜欢
  • 2020-02-23
  • 2012-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-11
相关资源
最近更新 更多