How can I find and replace specific text in a stored procedure?
I have the find and replace query but I'm not sure how to post that back to the stored procedure or update the stored procedure with the query result.
Here is the query that I am using for the find and replace:
SELECT
REPLACE (object_definition(object_id('storedprocedure_1')), 'findstring', 'replacestring')
Declare @spnames CURSOR
Declare @spname nvarchar(max)
Declare @moddef nvarchar(max)
Set @spnames = CURSOR FOR
select distinct object_name(c.id)
from syscomments c, sysobjects o
where c.text like '%findtext%'
and c.id = o.id
and o.type = 'P'
OPEN @spnames
FETCH NEXT
FROM @spnames into @spname
WHILE @@FETCH_STATUS = 0
BEGIN
Set @moddef =
(SELECT
Replace ((REPLACE(definition,'findtext','replacetext')),'ALTER','create')
FROM sys.sql_modules a
JOIN
( select type, name,object_id
from sys.objects b
where type in (
'p' -- procedures
)
and is_ms_shipped = 0
)b
ON a.object_id=b.object_id where b.name = @spname)
exec('drop procedure dbo.' + @spname)
execute sp_executesql @moddef
FETCH NEXT FROM @spnames into @spname
END
This is what I was able to come up with, its currently doing the text replace and re creating the stored procedures.
You can get the definition of a stored procedure like so:
use <your database>
go
select
definition
from
sys.sql_modules
where
object_id = OBJECT_ID('<your schema.procedure_name>')
That will return the actual definition of the procedure you specify. You can build a list of stored procedures and walk through that one at a time, I guess. Not so sure I'd recommend trying to change them in sys.sql_modules, but at least you could find the ones that contain the text you're looking for.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.