我想写一个脚本,执行的时候先调出数据库中原有存储过程,替换修改的那一部分,然后执行。
例:create proc abc
as
select xm,xb from name 我想把过程中的xm替换为xm as 姓名,然后执行脚本 因为用户比较多,有些存储过程是针对单个用户进行调整的,如果统一执行新的脚本怕影响用户的特殊调整,能修改他原有存储过程的一部分,然后执行就方便多了?
例:create proc abc
as
select xm,xb from name 我想把过程中的xm替换为xm as 姓名,然后执行脚本 因为用户比较多,有些存储过程是针对单个用户进行调整的,如果统一执行新的脚本怕影响用户的特殊调整,能修改他原有存储过程的一部分,然后执行就方便多了?
as
select xm as 姓名,xb from name有何不可?
getParameter(1)
getParameter(2)这样?
/*******************************************************************
修改远程服务器的存储过程 DoAlterProc使用方法:
1、本地有表 dbase 存放远程服务器的信息 -- 查看记录
select * from 数据库名.dbo.dbase dbip dbname dbuser dbpwd lx bz
---------------------------- -------- ------ --------- ----------- ------------------------------
192.168.0.1\实例名 数据库名 SA 1 1 服务器
192.168.0.2 数据库名 SA 1 2 同事服务器
-- 插入记录 use 数据库名
insert dbase
select '192.168.0.2', -- 服务器+实例名
'数据库名', -- 数据库名
'sa', -- 用户名
'1', -- 用户密码
2, -- 类型(1:服务器,2:同事,可以进一步具体化)
'' -- 备注
-- 更新记录 2、D盘下有一个TXT 文档,存放最新的存储过程信息测试用例:EXEC DoAlterProc 1,'PSZY'*******************************************************************/CREATE PROC [dbo].[DoAlterProc]
@lx int -- 服务器类型
AS -- 修改
DECLARE @cmd nvarchar(MAX);DECLARE @TEXT NVARCHAR;
SET @cmd = ''; SELECT
@cmd = @cmd + 'EXEC xp_cmdshell N''sqlcmd -S '+dbip+' -i"D:\aa.txt" -d '+dbname+' -U '+dbuser+case when isnull(dbpwd,'')='' then '' else ' -P ' end +dbpwd+''';'+CHAR(13)+CHAR(10)
FROM dbase
where lx=@lx; print @cmd
EXEC(@cmd)
go