创建全局声明
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
;
我有多个使用相同声明的存储过程,并且值始终保持不变。
这是重复使用的声明示例:
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
;