create procedure sql_dump(@str varchar(100)=null) as declare @table_name varchar(50),@column_name varchar(50),@type varchar(50),@length varchar(5),@precision varchar(2), @scale varchar(2),@nullable varchar(10),@msg varchar(2000),@msg1 varchar(2000),@table_name1 varchar(50),@count int, @temp int,@constraint_name varchar(200),@parent_table varchar(50),@reference_column varchar(50),@inc int, @temp_v varchar(8000),@result varchar(2500),@count1 int,@col varchar(50),@for_col varchar(50),@ref_col varchar(50),@foreign_col varchar(50), @reference_col varchar(50),@default_val varchar(1000),@trigg_text varchar(8000), @const1 varchar(100),@const2 varchar(10),@file_name varchar(100),@struct varchar(3),@data varchar(3),@tab_name varchar(50),@temp_str varchar(100),@collat varchar(250),@status varchar(25),@file_ex int,@file varchar(100),@db_name varchar(100),@temp_file varchar(100),@dump_type varchar(50),@temp_m numeric(25,4),@count2 int set nocount on set @const1='-----------------------------------------------------------------------------------------------------------' set @const2='' set @file_name=null set @tab_name=null set @struct=null set @data=null set @db_name=null set @temp_str='' set @str=@str+' -' set @str=substring(@str,2,len(@str)) while len(@str)>1 begin set @temp_str=substring(@str,1,charindex('-',@str,1)-1) set @str=substring(@str,charindex('-',@str,1),len(@str)) set @str=substring(@str,2,len(@str)) if (substring(@temp_str,1,1)='f') set @file_name=substring(@temp_str,3,len(@temp_str)) else if (substring(@temp_str,1,1)='t') set @tab_name=substring(@temp_str,3,len(@temp_str)) else if (substring(@temp_str,1,1)='s') set @struct=@temp_str else if (substring(@temp_str,1,1)='a') set @data=@temp_str else if (substring(@temp_str,1,1)='d') set @db_name=substring(@temp_str,3,len(@temp_str)) else begin set @temp_str=substring(@temp_str,1,1) raiserror ('Invalid Parameter -%s passing in procedure sql_dump',16,1,@temp_str) goto cleanup end end if @db_name is null begin raiserror ('Missing Argument: Database name',16,1) goto cleanup end else begin select @count=count(*) from master..sysdatabases where name=@db_name if @count=0 begin raiserror ('Invalid Database name ''%s''',16,1,@db_name) goto cleanup end end set @count=0 if @tab_name is not null begin exec('select name from '+@db_name+'..sysobjects where xtype=''U'' and status >=0 and name='''+@tab_name+'''') set @count=@@rowcount if @count=0 begin raiserror ('Invalid Object name ''%s''',16,1,@tab_name) goto cleanup end end set @count=0 if @file_name is null begin select @temp_file=substring(filename,1,charindex('data',filename,1)-1) from master..sysdatabases where name='master' set @file_name=@temp_file+'BACKUP\'+@db_name+'.txt' end execute master.dbo.xp_fileexist @file_name,@file_exists=@file_ex output if @file_ex=1 begin set @file='"'+@file_name+'"' set @msg='del '+@file execute master.dbo.xp_cmdshell @msg set @msg='' end if (@tab_name is null and @struct is null and @data is null) or (@tab_name is null and @struct is not null and @data is not null) set @dump_type='Full Dump' else if (@tab_name is null and @struct is not null) set @dump_type='Schema Only' else if (@tab_name is null and @data is not null) set @dump_type='Data Only' else if (@tab_name is not null) set @dump_type='Partial Dump' set @msg='--Database Name: '+@db_name+' Dump Type: '+@dump_type set @msg1='--Created by: Sql_dump Created at: '+convert(varchar(50),getdate()) execute sp_AppendToFile @file_name,@msg execute sp_AppendToFile @file_name,@msg1 execute sp_AppendToFile @file_name,@const2 if @tab_name is null and @struct is null and @data is null goto creat else if @tab_name is null and @struct is not null and @data is null goto creat else if @tab_name is not null and @struct is null and @data is null goto creat else if @tab_name is not null and @struct is not null and @data is null goto creat else if @tab_name is not null and @struct is not null and @data is not null goto creat else if @tab_name is not null and @struct is null and @data is not null goto inser else if @tab_name is null and @struct is null and @data is not null goto inser creat: exec('declare c1 cursor fast_forward for select name from '+@db_name+'..sysobjects where xtype=''U'' and status >= 0 order by name') open c1 fetch next from c1 into @table_name while @@fetch_status = 0 begin if (len(@tab_name) >0 and @table_name=@tab_name) or @tab_name is null begin execute sp_AppendToFile @file_name,@const1 set @msg1='-- Create Query for '+@table_name execute sp_AppendToFile @file_name,@msg1 execute sp_AppendToFile @file_name,@const1 execute sp_AppendToFile @file_name,@const2 set @msg1='' set @msg='create table '+@table_name+'(' execute sp_AppendToFile @file_name,@msg set @msg='' exec('declare c2 cursor fast_forward for select b.name as table_name,a.name as column_name,c.name as type,a.length as length,a.xprec as precisions,a.xscale as scale,case isnullable when 0 then ''NOT NULL'' else ''NULL'' end as nullable,c.collation from '+@db_name+'..syscolumns a,'+@db_name+'..sysobjects b,'+@db_name+'..systypes c where b.xtype=''U'' and a.id=b.id and a.xusertype=c.xtype and b.name='''+@table_name+''' order by b.name') set @count=0 set @temp=1 exec('select 1 from '+@db_name+'..syscolumns a,'+@db_name+'..sysobjects b,'+@db_name+'..systypes c where b.xtype=''U'' and a.id=b.id and a.xusertype=c.xtype and b.name='''+@table_name+'''') set @count=@@rowcount open c2 fetch next from c2 into @table_name1,@column_name,@type,@length,@precision,@scale,@nullable,@collat while @@fetch_status = 0 begin if @type='varchar' set @msg= @column_name+' '+@type+'('+@length+') collate '+@collat+' '+@nullable else if @type='numeric' or @type='decimal' set @msg= @column_name+' '+@type+'('+@precision+','+@scale+') '+@nullable else if @type='datetime' set @msg= @column_name+' '+@type+' '+@nullable else if @type='int' set @msg= @column_name+' '+@type+' '+@nullable else if @type='char' set @msg= @column_name+' '+@type+'('+@length+') collate '+@collat+' '+@nullable else if @type='image' set @msg= @column_name+' '+@type+' '+@nullable else if @type='text' set @msg= @column_name+' '+@type+' collate '+@collat+' '+@nullable else if @type='tinyint' set @msg= @column_name+' '+@type+' '+@nullable else if @type='smallint' set @msg= @column_name+' '+@type+' '+@nullable else if @type='bigint' set @msg= @column_name+' '+@type+' '+@nullable else if @type='bit' set @msg= @column_name+' '+@type+' '+@nullable else if @type='decimal' set @msg= @column_name+' '+@type+'('+@precision+','+@scale+') '+@nullable else if @type='money' set @msg= @column_name+' '+@type+' '+@nullable else if @type='smallmoney' set @msg= @column_name+' '+@type+' '+@nullable else if @type='float' set @msg= @column_name+' '+@type+' '+@nullable else if @type='real' set @msg= @column_name+' '+@type+' '+@nullable else if @type='smalldatetime' set @msg= @column_name+' '+@type+' '+@nullable else if @type='nchar' set @msg= @column_name+' '+@type+'('+@length+') '+@nullable else if @type='nvarchar' set @msg= @column_name+' '+@type+'('+@length+') '+@nullable else if @type='ntext' set @msg= @column_name+' '+@type+' '+@nullable else if @type='sysname' set @msg= @column_name+' '+@type+' '+@nullable else if @type='binary' set @msg= @column_name+' '+@type+'('+@length+') '+@nullable else if @type='varbinary' set @msg= @column_name+' '+@type+'('+@length+') '+@nullable else if @type='uniqueidentifier' set @msg= @column_name+' '+@type+' '+@nullable else if @type='timestamp' set @msg= @column_name+' '+@type if @count<>@temp set @msg=@msg+',' execute sp_AppendToFile @file_name,@msg set @temp=@temp+1 set @msg='' fetch next from c2 into @table_name1,@column_name,@type,@length,@precision,@scale, @nullable,@collat end close c2 deallocate c2 execute sp_AppendToFile @file_name,')' execute sp_AppendToFile @file_name,'' end fetch next from c1 into @table_name end execute sp_AppendToFile @file_name,@const2 close c1 deallocate c1 if @tab_name is not null and @struct is not null and @data is null goto constrain else if @tab_name is null and @struct is not null and @data is null goto constrain else goto inser inser: /* To get insert query */ exec('declare c_tab cursor fast_forward for select name from '+@db_name+'..sysobjects where xtype=''U'' and status >= 0 order by name') open c_tab fetch next from c_tab into @table_name while @@fetch_status = 0 begin if (len(@tab_name) >0 and @table_name=@tab_name) or @tab_name is null begin set @count=0 set @msg1='' set @msg1='alter table '+@db_name+'..'+@table_name+' add row_inc_ins int identity(1,1)' execute(@msg1) set @msg1='' set @msg1='select row_inc_ins from '+@db_name+'..'+@table_name execute(@msg1) set @count=@@rowcount if @count<>0 begin set @msg1='' execute sp_AppendToFile @file_name,@const2 execute sp_AppendToFile @file_name,@const1 set @msg1='-- Insert Query for '+@table_name execute sp_AppendToFile @file_name,@msg1 execute sp_AppendToFile @file_name,@const1 execute sp_AppendToFile @file_name,@const2 set @msg1='' set @temp=1 while @temp<=@count begin set @result='' exec('declare c_column cursor fast_forward for select b.name as table_name,a.name as column_name,c.name as type from '+@db_name+'..syscolumns a,'+@db_name+'..sysobjects b,'+@db_name+'..systypes c where b.xtype=''U'' and a.id=b.id and a.xusertype=c.xtype and b.name='''+@table_name+''' and a.name <>''row_inc_ins'' order by a.colid') open c_column fetch next from c_column into @table_name,@column_name,@type while @@fetch_status = 0 begin if @type='image' begin set @msg='' set @msg='declare c_value cursor fast_forward for select convert(varbinary(8000),'+@column_name+') from '+@db_name+'..'+@table_name+ ' where row_inc_ins='+convert(varchar(10),@temp) execute(@msg) open c_value fetch next from c_value into @temp_v close c_value deallocate c_value if @temp_v is null set @temp_v='NULL' else set @temp_v=master.dbo.fn_varbintohexstr(convert(varbinary,@temp_v)) end else begin set @msg='' set @msg='declare c_value cursor fast_forward for select convert(varchar(8000),'+@column_name+') from '+@db_name+'..'+@table_name+ ' where row_inc_ins='+convert(varchar(10),@temp) execute(@msg) open c_value fetch next from c_value into @temp_v close c_value deallocate c_value if @temp_v is null set @temp_v='NULL' else begin if @type='varchar'or @type='char' or @type='datetime' or @type='text' or @type='nchar' or @type='nvarchar' or @type='ntext' or @type='smalldatetime' or @type='uniqueidentifier' begin set @count2=charindex('''',@temp_v) if @count2<>0 set @temp_v=substring(@temp_v,1,charindex('''',@temp_v)-1)+''''+ substring(@temp_v,charindex('''',@temp_v),len(@temp_v)) set @temp_v=''''+@temp_v+'''' end else if @type='binary' or @type='varbinary' or @type='image' set @temp_v=master.dbo.fn_varbintohexstr(convert(varbinary,@temp_v)) else if @type='timestamp' set @temp_v='NULL' end end set @result=@result+@temp_v set @result=@result+',' set @temp_v='' fetch next from c_column into @table_name,@column_name,@type end set @msg='' set @result=substring(@result,1,len(@result)-1) set @msg='insert into '+@table_name+' values('+@result+')' execute sp_AppendToFile @file_name,@msg set @msg='' set @result='' close c_column deallocate c_column set @temp=@temp+1 end end set @msg1='' set @msg1='alter table '+@db_name+'..'+@table_name+' drop column row_inc_ins ' execute(@msg1) end fetch next from c_tab into @table_name end close c_tab deallocate c_tab if @tab_name is not null and @struct is null and @data is not null goto cleanup else if @tab_name is null and @struct is null and @data is not null goto cleanup else goto constrain constrain: /*To add default constraints*/ set @table_name='' set @type='' set @column_name='' set @table_name1='' set @default_val='' exec('declare c_tables cursor fast_forward for select name from '+@db_name+'..sysobjects where xtype=''U'' and status >= 0 order by name') open c_tables fetch next from c_tables into @table_name while @@fetch_status = 0 begin if (len(@tab_name) >0 and @table_name=@tab_name) or @tab_name is null begin set @count=0 set @temp=1 exec('select 1 from '+@db_name+'..syscolumns a,'+@db_name+'..sysobjects b,'+@db_name+'..systypes c,'+@db_name+'..syscomments d where b.xtype=''U'' and a.id=b.id and a.xusertype=c.xtype and a.cdefault=d.id and b.name='''+@table_name+'''') if @count<>0 begin set @msg='' execute sp_AppendToFile @file_name,@msg execute sp_AppendToFile @file_name,@const1 set @msg1='-- Default constraints for '+@table_name execute sp_AppendToFile @file_name,@msg1 execute sp_AppendToFile @file_name,@const1 execute sp_AppendToFile @file_name,@const2 set @msg='' set @msg='alter table '+@table_name+' add' execute sp_AppendToFile @file_name,@msg exec('declare c_default cursor fast_forward for select b.name as table_name,a.name as column_name,d.text as default_value from '+@db_name+'..syscolumns a,'+@db_name+'..sysobjects b,'+@db_name+'..systypes c,'+@db_name+'..syscomments d where b.xtype=''U'' and a.id=b.id and a.xusertype=c.xtype and a.cdefault=d.id and b.name='''+@table_name+'''') open c_default fetch next from c_default into @table_name1,@column_name,@default_val while @@fetch_status = 0 begin set @default_val=substring(@default_val,2,len(@default_val)-2) set @msg='' set @msg='constraint df_'+@column_name+'_'+@table_name+' default '+@default_val+' for '+ @column_name if @count<>@temp set @msg=@msg+',' execute sp_AppendToFile @file_name,@msg set @temp=@temp+1 fetch next from c_default into @table_name1,@column_name,@default_val end close c_default deallocate c_default end end fetch next from c_tables into @table_name end close c_tables deallocate c_tables /* To add primary key constraints */ set @table_name='' set @type='' set @column_name='' exec('declare c_primary cursor fast_forward for select distinct a.name as table_name,b.name as constraint_name,b.xtype as constraint_type from '+@db_name+'..sysobjects a,'+@db_name+'..sysobjects b,'+@db_name+'..sysindexes c,'+@db_name+'..sysindexkeys d,'+@db_name+'..syscolumns e where b.xtype=''PK'' and b.parent_obj=a.id and b.parent_obj=c.id and c.indid=1 and c.id=d.id and c.indid=d.indid and d.id=e.id and d.colid=e.colid and a.status >= 0 order by table_name') open c_primary fetch next from c_primary into @table_name,@constraint_name,@type while @@fetch_status = 0 begin if (len(@tab_name) >0 and @table_name=@tab_name) or @tab_name is null begin set @count=0 set @msg='' set @msg1='' execute sp_AppendToFile @file_name,@msg execute sp_AppendToFile @file_name,@const1 set @msg='--Primary key constraints for '+@table_name execute sp_AppendToFile @file_name,@msg execute sp_AppendToFile @file_name,@const1 execute sp_AppendToFile @file_name,@const2 set @msg='' exec('select 1 from '+@db_name+'..sysobjects a,'+@db_name+'..sysobjects b,'+@db_name+'..sysindexes c,'+@db_name+'..sysindexkeys d,'+@db_name+'..syscolumns e where b.xtype=''PK'' and b.parent_obj=a.id and b.parent_obj=c.id and c.indid=1 and c.id=d.id and c.indid=d.indid and d.id=e.id and d.colid=e.colid and b.name='''+@constraint_name+'''') set @count=@@rowcount if @count<>1 begin exec('declare temp_cur cursor fast_forward for select e.name as column_name from '+@db_name+'..sysobjects a,'+@db_name+'..sysobjects b,'+@db_name+'..sysindexes c,'+@db_name+'..sysindexkeys d,'+@db_name+'..syscolumns e where b.xtype=''PK'' and b.parent_obj=a.id and b.parent_obj=c.id and c.indid=1 and c.id=d.id and c.indid=d.indid and d.id=e.id and d.colid=e.colid and b.name='''+@constraint_name+'''') open temp_cur fetch next from temp_cur into @col while @@fetch_status = 0 begin set @msg1=@msg1+@col set @msg1=@msg1+',' fetch next from temp_cur into @col end set @column_name=substring(@msg1,1,len(@msg1)-1) close temp_cur deallocate temp_cur end else begin exec('declare temp1_cur cursor fast_forward for select e.name as column_name from ' +@db_name+'..sysobjects a,'+@db_name+'..sysobjects b,'+@db_name+'..sysindexes c,'+@db_name+'..sysindexkeys d,'+@db_name+'..syscolumns e where b.xtype=''PK'' and b.parent_obj=a.id and b.parent_obj=c.id and c.indid=1 and c.id=d.id and c.indid=d.indid and d.id=e.id and d.colid=e.colid and b.name='''+@constraint_name+'''') open temp1_cur fetch next from temp1_cur into @col while @@fetch_status = 0 begin set @column_name=@col fetch next from temp1_cur into @col end close temp1_cur deallocate temp1_cur end set @msg='alter table '+@table_name+' add constraint '+@constraint_name+' primary key('+@column_name+')' execute sp_AppendToFile @file_name,@msg end fetch next from c_primary into @table_name,@constraint_name,@type end close c_primary deallocate c_primary /* To add Unique key constraints */ set @inc=0 set @table_name='' set @type='' set @column_name='' set @constraint_name='' set @msg1='' set @table_name1='' set @count=0 exec('declare c_table cursor fast_forward for select name from '+@db_name+'..sysobjects where xtype=''U'' and status >= 0 order by name') open c_table fetch next from c_table into @table_name1 while @@fetch_status = 0 begin if (len(@tab_name) >0 and @table_name1=@tab_name) or @tab_name is null begin set @count=0 set @temp=1 exec('select 1 from '+@db_name+'..sysobjects a,'+@db_name+'..sysobjects b,'+@db_name+'..sysindexes c,'+@db_name+'..sysindexkeys d,'+@db_name+'..syscolumns e where b.xtype=''UQ'' and b.parent_obj=a.id and c.indid > 1 and c.id=b.parent_obj and c.name=b.name and c.id=d.id and c.indid=d.indid and d.id=e.id and d.colid=e.colid and a.name='''+@table_name1+'''') set @count=@@rowcount if @count<>0 begin set @msg='' execute sp_AppendToFile @file_name,@msg execute sp_AppendToFile @file_name,@const1 set @msg1='-- Unique key constraints for '+@table_name1 execute sp_AppendToFile @file_name,@msg1 execute sp_AppendToFile @file_name,@const1 execute sp_AppendToFile @file_name,@const2 set @msg1='' set @msg='alter table '+@table_name1+' add' execute sp_AppendToFile @file_name,@msg set @count1=0 exec('declare c_unique cursor fast_forward for select distinct a.name as table_name,b.name as constraint_name,b.xtype as constraint_type from '+@db_name+'..sysobjects a,'+@db_name+'..sysobjects b,'+@db_name+'..sysindexes c,'+@db_name+'..sysindexkeys d,'+@db_name+'..syscolumns e where b.xtype=''UQ'' and b.parent_obj=a.id and c.indid > 1 and c.id=b.parent_obj and c.name=b.name and c.id=d.id and c.indid=d.indid and d.id=e.id and d.colid=e.colid and a.name='''+@table_name1+''' order by table_name') open c_unique fetch next from c_unique into @table_name,@constraint_name,@type while @@fetch_status = 0 begin set @temp_v='' set @msg1='' exec('declare c_count cursor fast_forward for select e.name as column_name from '+@db_name+'..sysobjects a,'+@db_name+'..sysobjects b,'+@db_name+'..sysindexes c,'+@db_name+'..sysindexkeys d,'+@db_name+'..syscolumns e where b.xtype=''UQ'' and b.parent_obj=a.id and c.indid > 1 and c.id=b.parent_obj and c.name=b.name and c.id=d.id and c.indid=d.indid and d.id=e.id and d.colid=e.colid and a.name='''+@table_name+''' and b.name='''+@constraint_name+'''') open c_count fetch next from c_count into @temp_v while @@fetch_status = 0 begin set @count1=@count1+1 set @msg1=@msg1+@temp_v set @msg1=@msg1+',' fetch next from c_count into @temp_v end close c_count deallocate c_count set @msg1=substring(@msg1,1,len(@msg1)-1) set @msg='constraint '+@constraint_name+' unique('+@msg1+')' set @msg1='' if @count<>@count1 set @msg=@msg+',' execute sp_AppendToFile @file_name,@msg fetch next from c_unique into @table_name,@constraint_name,@type end close c_unique deallocate c_unique end end fetch next from c_table into @table_name1 set @msg='' end close c_table deallocate c_table /* To add Foreign key constraints */ set @table_name='' set @type='' set @column_name='' set @constraint_name='' set @msg1='' set @table_name1='' set @count=0 exec('declare c_tables cursor fast_forward for select name from '+@db_name+'..sysobjects where xtype=''U'' and status >= 0 order by name') open c_tables fetch next from c_tables into @table_name1 while @@fetch_status = 0 begin if (len(@tab_name) >0 and @table_name1=@tab_name) or @tab_name is null begin set @count=0 set @temp=1 exec('select 1 from '+@db_name+'..sysforeignkeys b,'+@db_name+'..sysobjects a,'+@db_name+'..sysobjects c,'+@db_name+'..sysobjects d,'+@db_name+'..syscolumns e,'+@db_name+'..syscolumns f where a.id=b.constid and c.id=b.fkeyid and d.id=b.rkeyid and b.fkeyid=e.id and b.fkey=e.colid and b.rkeyid=f.id and b.rkey=f.colid and c.name='''+@table_name1+'''') set @count=@@rowcount if @count<>0 begin set @msg='' execute sp_AppendToFile @file_name,@msg execute sp_AppendToFile @file_name,@const1 set @msg1='-- Foreign key constraints for '+@table_name1 execute sp_AppendToFile @file_name,@msg1 execute sp_AppendToFile @file_name,@const1 execute sp_AppendToFile @file_name,@const2 set @msg1='' set @msg='alter table '+@table_name1+' add' execute sp_AppendToFile @file_name,@msg set @count1=0 exec('declare c_foreign cursor fast_forward for select distinct a.name as constraint_name,a.xtype as type,c.name as table_name,d.name as parent_table from '+@db_name+'..sysforeignkeys b,'+@db_name+'..sysobjects a,'+@db_name+'..sysobjects c,'+@db_name+'..sysobjects d,'+@db_name+'..syscolumns e,'+@db_name+'..syscolumns f where a.id=b.constid and c.id=b.fkeyid and d.id=b.rkeyid and b.fkeyid=e.id and b.fkey=e.colid and b.rkeyid=f.id and b.rkey=f.colid and c.name='''+@table_name1+'''') open c_foreign fetch next from c_foreign into @constraint_name,@type,@table_name,@parent_table while @@fetch_status = 0 begin set @foreign_col='' set @reference_col='' set @for_col='' set @ref_col='' exec('declare c_getcol cursor fast_forward for select e.name as foreign_key_column,f.name as refernce_column from '+@db_name+'..sysforeignkeys b,'+@db_name+'..sysobjects a,'+@db_name+'..sysobjects c,'+@db_name+'..sysobjects d,'+@db_name+'..syscolumns e,'+@db_name+'..syscolumns f where a.id=b.constid and c.id=b.fkeyid and d.id=b.rkeyid and b.fkeyid=e.id and b.fkey=e.colid and b.rkeyid=f.id and b.rkey=f.colid and a.name='''+@constraint_name+'''') open c_getcol fetch next from c_getcol into @for_col,@ref_col while @@fetch_status=0 begin set @count1=@count1+1 set @foreign_col=@foreign_col+@for_col set @foreign_col=@foreign_col+',' set @reference_col=@reference_col+@ref_col set @reference_col=@reference_col+',' fetch next from c_getcol into @for_col,@ref_col end close c_getcol deallocate c_getcol set @foreign_col=substring(@foreign_col,1,len(@foreign_col)-1) set @reference_col=substring(@reference_col,1,len(@reference_col)-1) set @msg='constraint '+@constraint_name+' foreign key('+@foreign_col+') references ' +@parent_table+'('+@reference_col+')' set @foreign_col='' set @reference_col='' if @count<>@count1 set @msg=@msg+',' execute sp_AppendToFile @file_name,@msg fetch next from c_foreign into @constraint_name,@type,@table_name,@parent_table end close c_foreign deallocate c_foreign end end fetch next from c_tables into @table_name1 end close c_tables deallocate c_tables set nocount off cleanup: set nocount off