NUMERIC (18, @variable) в хранимой процедуре SQL Server - PullRequest
1 голос
/ 28 апреля 2019

Я хочу сделать что-то вроде этого:

DECLARE @number INT = 2

DECLARE @TableResult AS TABLE 
                        (
                            Row1 VARCHAR (150),
                            Row2 VARCHAR (1500),
                            Row3 VARCHAR (150),
                            Row4 NUMERIC(18, @number)
                        )

Поскольку @number изменится.

Я попытался и получил ошибку "неправильный синтаксис".

Можно ли как-нибудь так поступить?

1 Ответ

1 голос
/ 28 апреля 2019

SQL Server является декларативным по своей структуре и не поддерживает подстановку макросов.

Тем не менее, если вы не состоите в браке с табличной переменной, возможно, вместо нее будет temp .

Пример

Declare @number INT = 3

Create table #TableResult (
 Row1            VARCHAR (150),
 Row2            VARCHAR (1500),
 Row3            VARCHAR (150)
  )

-- Add a new column via dynamic SQL
Declare @SQL varchar(max) = concat('Alter Table #TableResult add Row4 Numeric(18,',@number,')')
Exec(@SQL)


-- See the results
Select column_ordinal,name,system_type_name from sys.dm_exec_describe_first_result_set('Select * from #TableResult',null,null )  

Новая структура

column_ordinal  name    system_type_name
1               Row1    varchar(150)
2               Row2    varchar(1500)
3               Row3    varchar(150)
4               Row4    numeric(18,3)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...