Global SQL Procedure, System Objects and sp_ms_marksystemobject

You may come across a need to have a database of utils full of generic procedures which work on indvidual databases (say client databases).

You can't pass the database name into the procedure as a parameter and say "use @dbname" in the procedure and dynamic sql sucks.

One workaround is to create the procedure in the master database and then mark it as a system object.

eg
use [master]
create procedure sp_doThis // note the sp_ prefix is required
begin
// etc etc
end

go

exec sp_ms_marksystemobject 'sp_doThis' // second note, this procedure is undocumented, so I wouldn't be relying on this for life or death.

use [myotherdb]

exec sp_doThis
go


All done!

Comments

Popular posts from this blog

cf_sql_timestamp vs cf_sql_date vs getdate()

Lucee 4.5.2 cfpdfparam difference with Adobe ColdFusion