创建全局声明

Create global declarations

我有多个使用相同声明的存储过程,并且值始终保持不变。

这是重复使用的声明示例:

DECLARE @_status_PO_Auto_Approved as int
DECLARE @_status_PO_Invoice_Exceeds_PO_Amount as int
DECLARE @_status_PO_Item_Code_Mismatch as int

SET @_status_PO_Auto_Approved = 2
SET @_status_PO_Invoice_Exceeds_PO_Amount = 15
SET @_status_PO_Item_Code_Mismatch = 16

如何使这些声明成为全局声明,以便我可以在不同的过程中使用它们?

你不能。不过,您可以执行以下操作之一:

  • 将它们移动到标量函数中
CREATE FUNCTION dbo.fn_status_PO_Auto_Approved ...
  • 编写 SQLCMD 脚本以使用脚本范围变量生成这些值。

  • 我个人的喜好,创建一个包含两个(或更多)列的配置 table,即

VariableName                          Value
_status_PO_Auto_Approved              2
_status_PO_Invoice_Exceeds_PO_Amount  15

等然后您可以添加约束和诸如此类的东西以确保值是唯一的 and/or 以您需要的任何方式限制。

如果这些值仅在查询中使用,您也可以将它们声明为视图:

CREATE VIEW dbo._status_PO
AS
SELECT
  Auto_Approved             = 2,
  Invoice_Exceeds_PO_Amount = 15,
  Item_Code_Mismatch        = 16
;

和 CROSS JOIN 该视图在您的查询中使用以下值:

SELECT
  ...
FROM
  ...
  CROSS JOIN dbo._status_PO
WHERE
  ... = _status_PO.Auto_Approved
;