Есть ли способ сделать переменную TSQL постоянной?

Одним из решений, предложенных mssql Джаредом Ко, является использование sql-server псевдоконстант.

Как объяснено в SQL Server: Variables, Parameters or Literals? Or… Constants?:

Псевдоконстанты ms-sql-server не являются переменными или sql-server параметрами. Вместо этого sql-server они просто представления tsql с одной строкой и достаточным tsql количеством столбцов для sql-server поддержки ваших констант. С mssql помощью этих простых правил sql-server SQL Engine полностью игнорирует transact-sql значение представления, но mssql по-прежнему строит план выполнения transact-sql на основе его значения. В sql-srever плане выполнения даже не transact-sql отображается соединение с ms-sql-server представлением!

Создайте так:

CREATE SCHEMA ShipMethod
GO
-- Each view can only have one row.
-- Create one column for each desired constant.
-- Each column is restricted to a single value.
CREATE VIEW ShipMethod.ShipMethodID AS
SELECT CAST(1 AS INT) AS [XRQ - TRUCK GROUND]
      ,CAST(2 AS INT) AS [ZY - EXPRESS]
      ,CAST(3 AS INT) AS [OVERSEAS - DELUXE]
      ,CAST(4 AS INT) AS [OVERNIGHT J-FAST]
      ,CAST(5 AS INT) AS [CARGO TRANSPORT 5]

Тогда transact-sql используйте это так:

SELECT h.*
FROM Sales.SalesOrderHeader h
JOIN ShipMethod.ShipMethodID const
    ON h.ShipMethodID = const.[OVERNIGHT J-FAST]

Или вот mssql так:

SELECT h.*
FROM Sales.SalesOrderHeader h
WHERE h.ShipMethodID = (SELECT TOP 1 [OVERNIGHT J-FAST] FROM ShipMethod.ShipMethodID)

sql-server

tsql

2022-11-15T18:40:20+00:00