在資料庫開發過程中,如果某乙個表欄位名被重新命名。那麼在使用到該字段的儲存過程,對應的表欄位名也要修改。
當存在多個儲存都有使用該表字段,需要逐個去修改替換,是一件比較繁瑣的事情,我們需要乙個能實現批量替換的方法。
這裡我寫了乙個批量替換儲存過程內容的指令碼:
usemaster
goif
object_id('
[sp_sqlreplace]
') is
notnull
drop
procedure
sp_sqlreplace
gocreate
proc
sp_sqlreplace
(
@originaltext
nvarchar(max
),
@currenttext
nvarchar(max))
asset nocount on
declare
@count
int=
0,@i
int=
1,@sql1
nvarchar(max),@sql2
nvarchar(max),@objectname
sysname;
declare
@tbltmp
table(id int
identity
primary
key,objectid int
,objectname sysname)
insert
into
@tbltmp(objectid,objectname) select
distinct id,object_name(id) from sys.syscomments where
text
like'%
'+@originaltext+'
%'set@count
=@@rowcount
if@count=0
return
begin
try
begin
transaction
while
@i<=
@count
begin
select
@sql1='
if object_id(
'''+
quotename(objectname)+
''') is not null drop '+
case
when
object_id(objectname,n'
p') is
notnull
then
'procedure
'when
coalesce(object_id(objectname,n'
fn'),object_id(objectname,n'
if'),object_id(objectname,n'
tf')) is
notnull
then
'function
'when
object_id(objectname,n'
tr') is
notnull
then
'trigger
'else
'view
'end
+quotename
(objectname) ,
@sql2
=replace(object_definition(objectid),@originaltext,@currenttext
),
@objectname
=objectname
from
@tbltmp
where id=
@iexec (@sql1
)
@objectname
exec (@sql2
)
set@i+=1
endcommit
transaction
select n'
影響到物件有:'as
[資訊提示
]select
'exec sp_sql
'+objectname as
[物件名稱
],case
when
object_id(objectname,n'
p') is
notnull
then
'procedure
'when
coalesce(object_id(objectname,n'
fn'),object_id(objectname,n'
if'),object_id(objectname,n'
tf')) is
notnull
then
'function
'when
object_id(objectname,n'
tr') is
notnull
then
'trigger
'else
'view
'endas[
型別]from
mysql 批量替換 內容
mysql批量替換字段內容語法 update 表名set 字段 replace 字段,原內容 替換內容 where 條件 支援多欄位 update 表名set 字段 replace 字段,原內容 替換內容 字段 replace 字段,原內容 替換內容 where 條件 例子 update ecs g...
MAC 批量檔案內容替換
mac 批量檔案內容替換 場景目錄下部分檔案內容需要進行批量替換,需要做的工作有查詢過濾包含替換原字串的檔案,對這些檔案中的內容進行替換。涉及到的命令有grep xargs sed。處理示例 1.替換客戶端 2.替換商家端 命令解釋 上述命令可以分拆為兩個命令分別是查詢和替換 1.使用grep查詢到...
批量替換表字段內容
覺得有用,給兄弟們分享一下 declare updatestring nvarchar 1000 declare selectstring nvarchar 1000 declare colname varchar 100 declare count int if tblname is null o...