Mat*_*ias 0 t-sql sql-server variables
我有这种情况,我不能在sql中使用@标志.但是我想声明变量.有没有人知道是否有任何其他方式来声明它们而不使用@符号?
解决方法是使用临时表.这会增加很多开销,影响查询计划,并且需要更多代码才能实现相同的功能,但您可以使其工作.
请注意它们不是变量,不能使用变量@.
假设你不能这样做:
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)
虽然有一个奇怪的要求不使用@,你可能无法使用#......
| 归档时间: |
|
| 查看次数: |
439 次 |
| 最近记录: |