Thursday, March 29, 2012
Edit 1600+ stored procedures at once
If there is a function already tracking this I'd like to know.
If not, I want to tack an exec line to the end of all the SPs but I don't want to do it by adding it 1600 times manually. Is there any trick in the scripting process I can do to make this easier?
JBSelect
Replace(sc.Text +
Case
When sc.colid = s0.maxColid Then N'Exec your_proc' + NChar(10)
Else NChar(10)
End , N'Create Proc', 'Alter Proc') + NChar(10) + N'Go'
From syscomments sc
Join sysobjects so On sc.id = so.id
Join ( Select so.id, Max(colid) As 'maxColId'
From syscomments sc
Join sysobjects so On sc.id = so.id
Where so.type = 'P'
Group By so.id
) s0 On so.id = s0.id
Where so.type = 'P'
Order By so.name, sc.colid|||This is awesome! I did have to take it half at a time due to the limitation of row size, but it appears it did just what I wanted. Thank you very much. This will help for many other projects.
John
Sunday, February 26, 2012
DYNAMIC TSQL
Here is the sample query:
DECLARE @.TABLENAME NVARCHAR(50);
DECLARE @.COL NVARCHAR(50);
DECLARE @.VALUE NVARCHAR(50);
/*** THESE VARIABLES WERE ARE BEING DYNAMICALLY FEEDED THROUGH CURSOR***/
DECLARE @.SQL1 NVARCHAR(1000);
SET SQL1 = 'SELECT * FROM' + @.TABLENAME + ' WHERE' + @. COL + '=" + @.VALUE
EXECUTE sp_executesql @.SQL1
Now when I execute this SP it gives me error invalid colunm name. I figure out that its because of the variable @.VALUE. Eventually I found out that I need to single quote the value of this dynamically feeded variable @. VALUE
is there any way I can do this; give quotes to @.value like @. COL + '=" + ' @.VALUE'
Use the following query,
Code Snippet
DECLARE@.TABLENAME NVARCHAR(50);
DECLARE@.COL NVARCHAR(50);
DECLARE@.VALUE NVARCHAR(50);
DECLARE@.SQL1 NVARCHAR(1000);
DECLARE@.PARAM NVARCHAR(1000);
SET @.SQL1= N'SELECT * FROM ' + @.TABLENAME + N' WHERE ' + @.COL + N'=@.VALUE';
SET @.PARAM = N'@.Value as Nvarchar(50)';
EXECUTEsp_executesql @.SQL1, @.PARAM, @.VALUE