xxxxxxxxxx
پنج شنبه 28 تیر 1386, 01:11 صبح
سلام یک سری دستور نوشتم که بگردد تمام جداول راکه userساخته (دریک databaseمشخص)یکی یکی بالا بیاوردوقراردهددرمتغیروبرا ی هرجدول نیز حلقه ای که یکی یکی فیلدهارا بالا بیاورد ودریک متغیر بریزد که چی ؟ که با دستور update بک کاراکتر مثل "ک"را جایگزین یک کاراکتر دیگر بکند.
مشکل اینجاست دردستور update اسم جدول رادرمتغیر قبول نمی کندولی بطور مستقیم قبول میکند.درضمن تازه کار هستم ونیز در Query Analyzer این کار رامیخواه انجام دهم .پیشاپیش متشکرم
USE temp02
GO
DECLARE @name_t varchar(25), @name_f varchar(25)
--DECLARE @nt int,@nf int
DECLARE Name_T
CURSOR FOR SELECT [name] FROM [Montasabin].[dbo].[sysobjects] where xtype='U' ORDER BY [name]
--SELECT [name] from syscolumns where type_name(xusertype)<>'int' and object_name(id)=@name_t
--set @nt =0
--set @nf =0
OPEN Name_T
-- اجرای اولین فیچ وقراردادن آن دریک متغیر
FETCH NEXT FROM Name_T INTO @name_t
--set @nt =1
-- کنترل تعداد فیچهای باقیمانده برای پایان دادن به حلقه
WHILE @@FETCH_STATUS = 0
BEGIN
DECLARE Name_F CURSOR FOR
SELECT [name] from syscolumns where type_name(xusertype)<>'int' and object_name(id)=@name_t
OPEN Name_F
FETCH NEXT FROM Name_F INTO @name_f
-- set @nf =1
WHILE @@FETCH_STATUS = 0
BEGIN
--select @@CURSOR_ROWS
UPDATE @name_t SET @name_f = replace (@name_f,'ک','ک')
--
-- PRINT 'نام فیلد '+str(@nt,2)+str(@nf,3)+ @name_t+'.'+@name_f
-- FETCH NEXT FROM Name_F INTO @name_f
-- set @nf =@nf+1
END
FETCH NEXT FROM Name_F INTO @name_f
-- set @nt =@nt+1
CLOSE Name_F
DEALLOCATE Name_F
-- This is executed as long as the previous fetch succeeds.
FETCH NEXT FROM Name_T INTO @name_t
END
CLOSE Name_T
DEALLOCATE Name_T
GO
مشکل اینجاست دردستور update اسم جدول رادرمتغیر قبول نمی کندولی بطور مستقیم قبول میکند.درضمن تازه کار هستم ونیز در Query Analyzer این کار رامیخواه انجام دهم .پیشاپیش متشکرم
USE temp02
GO
DECLARE @name_t varchar(25), @name_f varchar(25)
--DECLARE @nt int,@nf int
DECLARE Name_T
CURSOR FOR SELECT [name] FROM [Montasabin].[dbo].[sysobjects] where xtype='U' ORDER BY [name]
--SELECT [name] from syscolumns where type_name(xusertype)<>'int' and object_name(id)=@name_t
--set @nt =0
--set @nf =0
OPEN Name_T
-- اجرای اولین فیچ وقراردادن آن دریک متغیر
FETCH NEXT FROM Name_T INTO @name_t
--set @nt =1
-- کنترل تعداد فیچهای باقیمانده برای پایان دادن به حلقه
WHILE @@FETCH_STATUS = 0
BEGIN
DECLARE Name_F CURSOR FOR
SELECT [name] from syscolumns where type_name(xusertype)<>'int' and object_name(id)=@name_t
OPEN Name_F
FETCH NEXT FROM Name_F INTO @name_f
-- set @nf =1
WHILE @@FETCH_STATUS = 0
BEGIN
--select @@CURSOR_ROWS
UPDATE @name_t SET @name_f = replace (@name_f,'ک','ک')
--
-- PRINT 'نام فیلد '+str(@nt,2)+str(@nf,3)+ @name_t+'.'+@name_f
-- FETCH NEXT FROM Name_F INTO @name_f
-- set @nf =@nf+1
END
FETCH NEXT FROM Name_F INTO @name_f
-- set @nt =@nt+1
CLOSE Name_F
DEALLOCATE Name_F
-- This is executed as long as the previous fetch succeeds.
FETCH NEXT FROM Name_T INTO @name_t
END
CLOSE Name_T
DEALLOCATE Name_T
GO