批量替換儲存過程內容指令碼sp SqlReplace

2022-01-30 07:40:00 字數 2887 閱讀 2674

在資料庫開發過程中,如果某乙個表欄位名被重新命名。那麼在使用到該字段的儲存過程,對應的表欄位名也要修改。

當存在多個儲存都有使用該表字段,需要逐個去修改替換,是一件比較繁瑣的事情,我們需要乙個能實現批量替換的方法。

這裡我寫了乙個批量替換儲存過程內容的指令碼:

use

master

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

)

print

@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...