SQL server批量更改表的架构名称——存储过程修改表名前缀为[dbo]

DECLARE @NAME SYSNAME --表名变量
 
DECLARE CSR CURSOR --定义一个游标
FOR
SELECT NAME FROM SYSOBJECTS WHERE XTYPE = 'U ' --在系统表SYSOBJECTS 中取[XTYPE = 'U '] ,即取用户表的表名
	OPEN CSR
	DECLARE @SCHEMATABLE VARCHAR (200) --定义一个字符串存放执行语句
		FETCH NEXT FROM CSR INTO @NAME --将游标向下移1行,获取的数据放入之前定义的变量@NAME中
			WHILE (@@FETCH_STATUS=0)  --判断是否成功获取数据
			BEGIN
			 --语句中的'HS.'是需要修改的架构名,'DBO'是目标架构名,可以修改
			   SET @NAME = 'HS.' + @NAME
			 PRINT 'ALTER SCHEMA DBO TRANSFER ' + @NAME --输出执行语句内容
			   SET @SCHEMATABLE = 'ALTER SCHEMA DBO TRANSFER ' + @NAME --生成动态执行语句
			  EXEC (@SCHEMATABLE) --开始执行
		FETCH NEXT FROM CSR INTO @NAME --将游标向下移1行
		END
	CLOSE CSR --关闭游标
DEALLOCATE CSR --删除游标引用,释放了游标占用的内存空间

关于表SYSOBJECTS 的官方解释:https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-sysobjects-transact-sql?view=sql-server-ver15

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值