Plsql SQL修改列精度大小
我有1200多列数字数据类型,大小可变:Plsql SQL修改列精度大小,plsql,Plsql,我有1200多列数字数据类型,大小可变: TABLE_NAME.DATA_TYPE(NUMBER(10,2) 在一次拍摄中,我想将所有这些列大小更改为另一个大小,如: TABLE_NAME.DATA_TYPE(NUMBER(15,2) 如何做到这一点?简单的答案是你做不到。你必须一次做一个。。。。但基本上,您可以使用其他代码一次完成所有操作。可以使用循环将查询发送到数据库,使用可以导出的所有列名称 如果需要从表中获取所有列名,可以通过查询 然后导出这些列并将它们放入数组或另一个临时表中。然后
TABLE_NAME.DATA_TYPE(NUMBER(10,2)
在一次拍摄中,我想将所有这些列大小更改为另一个大小,如:
TABLE_NAME.DATA_TYPE(NUMBER(15,2)
如何做到这一点?简单的答案是你做不到。你必须一次做一个。。。。但基本上,您可以使用其他代码一次完成所有操作。可以使用循环将查询发送到数据库,使用可以导出的所有列名称 如果需要从表中获取所有列名,可以通过查询 然后导出这些列并将它们放入数组或另一个临时表中。然后创建一个循环,循环遍历所有这些列名,并发送一个查询以同时更改数据类型和…BAM 希望这有帮助
declare@schema-nvarchar(255)
声明@table nvarchar(255)=“table_NAME”
声明@col nvarchar(255)
声明@dtype nvarchar(255)
声明@sql nvarchar(最大值)
声明的maxcols游标
选择
c、 表2.1.1-1,
c、 表格名称,
c、 列名称,
c、 数据类型
从…起
信息\u SCHEMA.c列
内部联接信息\u SCHEMA.t上的表
c、 TABLE_CATALOG=t.TABLE_CATALOG
和c.TABLE_SCHEMA=t.TABLE_SCHEMA
和c.TABLE_NAME=t.TABLE_NAME
和t.TABLE_TYPE='BASE TABLE'
哪里
c、 “数字(10,2)”等数据类型
和c.CHARACTER_MAXIMUM_LENGTH=-1
开maxcols
从maxcols获取下一个到@schema、@table、@col、@dtype
而@@FETCH\u STATUS=0
开始
set@sql='altertable['+@schema+'].['+@table+
']alter列['+@col+']'+@dtype+'编号(15,2)'
exec sp_executesql@sql
从maxcols获取下一个到@schema、@table、@col、@dtype
结束
关闭maxcols
释放maxcols
请尝试解释一下您的问题。我有1200多列数字数据类型,大小可变。现在,我想将所有这些列的大小更改为另一个大小,如数字(15,2)
SELECT *
FROM DB_NAME.INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = N'Customers'