Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Plsql SQL修改列精度大小_Plsql - Fatal编程技术网

Plsql SQL修改列精度大小

Plsql SQL修改列精度大小,plsql,Plsql,我有1200多列数字数据类型,大小可变: TABLE_NAME.DATA_TYPE(NUMBER(10,2) 在一次拍摄中,我想将所有这些列大小更改为另一个大小,如: TABLE_NAME.DATA_TYPE(NUMBER(15,2) 如何做到这一点?简单的答案是你做不到。你必须一次做一个。。。。但基本上,您可以使用其他代码一次完成所有操作。可以使用循环将查询发送到数据库,使用可以导出的所有列名称 如果需要从表中获取所有列名,可以通过查询 然后导出这些列并将它们放入数组或另一个临时表中。然后

我有1200多列数字数据类型,大小可变:

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'