我如何做相当于" #define SomeValue 5"在transact sql中?

时间:2014-10-24 08:53:13

标签: sql-server tsql macros

我必须制作一个长的transact sql脚本,我必须使用相同的值 很多次,我不想每次都写出文字值,但是使用C中的内容将是一个预处理器宏。

关键是我将多次运行此脚本,使用“SomeValue”的不同值,我只希望将文字值放在脚本中的一个位置,在顶部我可以看到它并将其更改为需要,然后再次运行脚本。

2 个答案:

答案 0 :(得分:2)

虽然您无法在SQL中定义常量,但您可以创建一个变量:

DECLARE @SomeValue INT = 5

SELECT *
FROM MyTable
WHERE ID = @SomeValue

SELECT *
FROM AnotherTable
WHERE SomeColumn = @SomeValue + 5

虽然您可以使用变量的位置存在限制。例如,您不能在DDL语句中使用它们。如果这样做,您将收到错误:

DECLARE @SomeValue INT = 5
CREATE TABLE TestTable(IntColumn INT DEFAULT(@SomeValue))

会出现此错误:

  

CREATE TABLE语句中不允许使用变量。

答案 1 :(得分:1)

您是否尝试在脚本的最开头使用默认值声明值,例如:DECLARE @SomeValue int = 5