| 
 IF OBJECT_ID('GenerateSP') IS NOT NULL DROP PROC GenerateSP
 GO
 
 CREATE PROC GenerateSP (
 @server varchar(30) = null,
 @uname varchar(30) = null,
 @pwd varchar(30) = null,
 @dbname varchar(30) = null,
 @filename varchar(200) = 'c:\script.sql'
 )
 AS
 
 DECLARE @object int
 DECLARE @hr int
 DECLARE @return varchar(200)
 DECLARE @exec_str varchar(2000)
 DECLARE @spname sysname
 
 SET NOCOUNT ON
 
 
 IF @server is NULL
 SELECT @server = @@servername
 
 
 IF @dbname is NULL
 SELECT @dbname = db_name()
 
 
 IF @uname is NULL
 SELECT @uname = SYSTEM_USER
 
 
 EXEC @hr = sp_OACreate 'SQLDMO.SQLServer', @object OUT
 IF @hr <> 0
 BEGIN
 PRINT 'error create SQLOLE.SQLServer'
 RETURN
 END
 
 
 IF @pwd is NULL
 BEGIN
 EXEC @hr = sp_OAMethod @object, 'Connect', NULL, @server, @uname
 IF @hr <> 0
 BEGIN
 PRINT 'error Connect'
 RETURN
 END
 END
 ELSE
 BEGIN
 EXEC @hr = sp_OAMethod @object, 'Connect', NULL, @server, @uname, @pwd
 IF @hr <> 0
 BEGIN
 PRINT 'error Connect'
 RETURN
 END
 END
 
 
 EXEC @hr = sp_OAMethod @object, 'VerifyConnection', @return OUT
 IF @hr <> 0
 BEGIN
 PRINT 'error VerifyConnection'
 RETURN
 END
 
 SET @exec_str = 'DECLARE script_cursor CURSOR FOR SELECT name FROM ' + @dbname + '..sysobjects WHERE type = ''P'' ORDER BY Name'
 EXEC (@exec_str)
 
 OPEN script_cursor
 FETCH NEXT FROM script_cursor INTO @spname
 WHILE (@@fetch_status <> -1)
 BEGIN
 SET @exec_str = 'Databases("'+ @dbname +'").StoredProcedures("'+RTRIM(UPPER(@spname))+'").Script(74077,"'+ @filename +'")'
 EXEC @hr = sp_OAMethod @object, @exec_str, @return OUT
 IF @hr <> 0
 BEGIN
 PRINT 'error Script'
 RETURN
 END
 FETCH NEXT FROM script_cursor INTO @spname
 END
 CLOSE script_cursor
 DEALLOCATE script_cursor
 
 
 EXEC @hr = sp_OADestroy @object
 IF @hr <> 0
 BEGIN
 PRINT 'error destroy object'
 RETURN
 END
 GO
 |