首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >SQL Server存储过程中的数字(18,@variable)

SQL Server存储过程中的数字(18,@variable)
EN

Stack Overflow用户
提问于 2019-04-29 00:44:31
回答 1查看 141关注 0票数 1

我想做这样的事情:

代码语言:javascript
复制
DECLARE @number INT = 2

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

因为@number将会改变。

我尝试了一下,得到了一个“语法错误”的错误。

有没有办法让我做这样的事?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-29 01:01:45

SQL Server是声明性的,不支持宏替换。

也就是说,如果您没有使用表变量,那么可以使用temp表。

示例

代码语言:javascript
复制
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 )  

新结构

代码语言:javascript
复制
column_ordinal  name    system_type_name
1               Row1    varchar(150)
2               Row2    varchar(1500)
3               Row3    varchar(150)
4               Row4    numeric(18,3)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55892460

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档