вʀa*_*ᴎєƞ 5 sql t-sql sql-server varchar alter-table
我试图修改SQL Server 2012数据库中的特定表中的特定列的数据类型.在脚本的开头,用户将设置列数据类型的新所需长度.但是,当我尝试更改表中的列以设置新varchar长度时,我收到错误.
以下是代码段和结果错误:
Declare @newPrecis int
Set @newPrecis = 23 -- New length of the index
Alter Table [dbo].[VTAB0047] Alter Column VAL varchar(@newPrecis)
Run Code Online (Sandbox Code Playgroud)
错误:
消息102,级别15,状态1,行5
'@ newPrecis'附近的语法不正确.
目前VAL列的长度是varchar(20),我希望它设置为23的长度或在set语句中输入的任何长度.
我现在忽略了任何类型的错误检查,因为我只是试图让基本功能失效.
如果你希望能够改变length的varchar column dynamically 再使用dynimic sql,因为varchar(n)不允许参数n:
declare @sql varchar(500);
Declare @newPrecis int
Set @newPrecis = 23 --or any other value
set @sql='Alter Table [dbo].[VTAB0047] Alter Column VAL varchar('+cast(@newPrecis as varchar(2))'+')'
exec(@sql)
Run Code Online (Sandbox Code Playgroud)
或者你可以直接使用:
Alter Table [dbo].[VTAB0047] Alter Column VAL varchar(23)
Run Code Online (Sandbox Code Playgroud)
注意:如果您的新值n小于旧值,那么String or binary data would be truncated如果长度大于新值的值,则可能会出错.
| 归档时间: |
|
| 查看次数: |
7854 次 |
| 最近记录: |