我有多个存储过程使用相同的声明,并且值始终保持不变。
以下是重复使用声明的示例:
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
如何将这些声明设为全局,以便我可以在不同的程序中使用它们?
答案 0 :(得分:3)
你做不到。你可以做以下几点之一:
CREATE FUNCTION dbo.fn_status_PO_Auto_Approved ...
编写SQLCMD脚本以使用脚本范围变量生成这些值。
我的个人偏好,创建一个包含两个(或更多)列的配置表,即
VariableName Value
_status_PO_Auto_Approved 2
_status_PO_Invoice_Exceeds_PO_Amount 15
等。然后,您可以添加约束和诸如此类的内容,以确保值以您需要的任何方式唯一和/或受限制。
答案 1 :(得分:1)
如果值仅用于查询,您也可以将它们声明为视图:
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
;