是否可以在sql-server中声明没有@符号的变量?

Mat*_*ias 0 t-sql sql-server variables

我有这种情况,我不能在sql中使用@标志.但是我想声明变量.有没有人知道是否有任何其他方式来声明它们而不使用@符号?

EzL*_*zLo 5

解决方法是使用临时表.这会增加很多开销,影响查询计划,并且需要更多代码才能实现相同的功能,但您可以使其工作.

请注意它们不是变量,不能使用变量@.

假设你不能这样做:

DECLARE @FilterDate DATE = '2019-01-01'
DECLARE @FilterInt INT = 20

SELECT
    T.*
FROM
    SomeTable AS T
WHERE
    T.Date > @FilterDate AND
    T.Integer > @FilterInt
Run Code Online (Sandbox Code Playgroud)

临时表的解决方法:

IF OBJECT_ID('tempdb..#Variables') IS NOT NULL
    DROP TABLE #Variables

CREATE TABLE #Variables (
    VariableName VARCHAR(100) PRIMARY KEY,
    Value VARCHAR(100))

INSERT INTO #Variables (
    VariableName,
    Value)
VALUES
    ('FilterDate', '2019-01-01'),
    ('FilterInt', '20')

SELECT
    T.*
FROM
    SomeTable AS T
WHERE
    T.Date > (SELECT CONVERT(DATE, V.Value) FROM #Variables AS V WHERE V.VariableName = 'FilterDate') AND
    T.Integer > (SELECT CONVERT(INT, V.Value) FROM #Variables AS V WHERE V.VariableName = 'FilterInt')
Run Code Online (Sandbox Code Playgroud)

虽然有一个奇怪的要求不使用@,你可能无法使用#......

  • "虽然有一个奇怪的要求不使用@,你可能无法使用#或者......":) +1 (3认同)