Есть ли способ сделать переменную 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
Есть ли способ сделать переменную TSQL постоянной?
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.