الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

Generate Sql Script For Pocedure

مغلق
بدأه imadouzoun في 5 مارس 2006 · 0 رد · 2,961 مشاهدة · في أرشيف قسم SQL Server
مشاركة: واتساب X فيسبوك تيليجرام
#1

السلام عليكم و رحمة الله :

من المعروف لدى مبرمجي T-Sql أن الإجرائيات المخزنة يخزن نصها في جدول النظام SysComments اللي قد يخزن نص الإجرائية في أكثر من سجل عندما تكون طويلة مثل :

إجرائيات النظام Sp_Help على سبيل المثال و غيرها الكثير .. فما الحل كي نعرضها مثلاً في سجل واحد عن طريق مثلاً أداة برمجية

خارجية (فيجوال ستوديو مثلاً) في مربع نص من سجل واحد ؟؟ 8-)

مسألة تحير .. قد يفكر البعض بعمل حلقة على سجلات نص الإجرائية و كتابتها في الأداة (مربع نص) ..

و السؤال لمادا نقوم بدلك و نحن نملك طريقة من لب الـSql Server تمكننا من جمع كم كبير من النص في حقل من نوع NText أو Text كما تحدثت في درس سابق ؟؟

إليك هده الإجرائية الظريفة قمت ببرمجتها و التي تقوم بوضع نص الإجرائية مهما كان عدد السجلات التي تشغلها في الجدول SysComments في سجل واحد فقط .. ;)

Proc [dbo].[Procedure_Text]
  @Proc_Name nvarchar(128)  = 'Procedure_Text' ,
  @DB        nvarchar(128)  = 'master'        ,
  @Drop_Temp_TB bit = 1

AS
if((select count(*) from tempdb..SysObjects where name = 'Proc_Text' and XType='U') > 0)
  DRop Table tempdb..Proc_Text
  
set @DB = RTrim(LTRim(@DB))
if(@DB <> '')
  set @DB = @DB + '..'

print @DB
exec
('
select '+ @DB +'syscomments.id,text ,name from '+ @DB +'syscomments
  Inner Join '+ @DB +'sysobjects ON '+ @DB +'syscomments.id = '+ @DB +'sysobjects.id 
Where 
  '+ @DB +'sysobjects.name = ''' + @proc_Name + '''
')


create Table #M(Txt nvarchar(4000))
Create Table tempdb..Proc_Text(TXT NText)

insert Into #M exec('select text from '+ @DB +'syscomments
  Inner Join '+ @DB +'sysobjects ON '+ @DB +'syscomments.id = '+ @DB +'sysobjects.id 
Where '+ @DB +'sysobjects.name = ''' + @proc_Name + '''')
insert Into tempdb..Proc_Text(TXT) values('1')


Declare @Part nvarchar(4000),@i int , @Ptr VarBinary(32), @q nvarchar(2000)
Select @i = 0 , @q = '' , @Ptr = TextPtr(TXT) From tempdb..Proc_Text

 declare C cursor For Select Txt from #M
 open C
 Fetch Next From C Into @Part 
 While @@Fetch_Status = 0
 Begin  
   UpdateText tempdb..Proc_Text.TXT @Ptr  @i  0   @Part
   set @q = 'UpdateText tempdb..Proc_Text.TXT ' 

   Select @Ptr = TextPtr(TXT) From tempdb..Proc_Text
   print ('-----------' + Char(13)  + @q)
   print @Ptr 
   print ' ' + cast(@i as nvarchar(5)) + ' 0 ' + Char(13) + '-----------' 

   Set @i = @i + 4000
   print '---------------' + Char(13) + cast(@i as Nvarchar(5)) + Char(13) + '---------------' + Char(13)
   Fetch Next From C Into @Part 
 End
 Close C
 DeAllocate C

Select TXT From tempdb..Proc_Text
if(@Drop_Temp_TB = 1)
   Drop Table tempdb..Proc_Text

---------------------------------------------------

إختبار :

[Procedure_Text] 'sp_help'

أرجو تقييمها .. :rolleyes:

تم تعديل هذه المشاركة بواسطة imadouzoun في 5 مارس 2006 في 03:16

دروس و كتب مفيدة----------------------كتيب الإجرائيات المخزنةتعرف على اللغة Transact SQL <<-->> كتيب عن تنصيب قواعد البيانات Sql Server باللغة العربية كتيب عن إنشاء قواعد البيانات في SQL Server باللغة العربية <<-->> درس مع الأمثلة عن المؤشرات و التعامل معها في الـ T-SQLالعبارات الشرطية و الحلقات في T-SQL <<-->> شرح لبعض الـ Extended Stored Procedure استخدام مكتبات الـ Dot Net الخاصة بك في الـ Sql Server 2005 <<-->> التعامل مع المصفوفات من خلال الـ T-SQLتعابير الجداول الشائعة في SQL Server 2005 <<-->>الاتصال بالأداة SQL Server Management Studioحلول سريعة و لمحات برمجية --------------------------------التصدير إلى إكسل : طريقة أولى : طريقة بسطر واحد من الكود <<-->> طريقة ثانية : طريقة تحتاج إنشاء إجرائية مخزنةً تجهيز بيانات جدول بالصيغة XML تمهيداً لحفظها كملف <<-->> تصدير البيانات إلى ملفات نصية برمجياً إغلاق جميع الإتصالات المفتوحة بقاعدة بيانات محددة .. تمهيداً لاسترجاعها أو حذفها <<-->> الاستعلام بناء على وقت مخزن بالصيغة العربية ضمن حقل نصي ..حذف السجلات المتكررة و إبقاء عدد محدد منها في جدول.. <<-->> أسرع طريقة لحذف سجلات جدول كيف احصل على اسم جهازي والباسوورد باستخدام T-SQL <<-->> حشر أنواع الصور المختلفة في حقل من نوع Image باستخدام إجرائية مخزنة .كيف تعرف أنواع الصور المخزنة في حقل من نوع Image .. <<-->> إجرائيات مخزنة ببارامترات ديناميكية مفيدة جداً للاستعلامات استخدام رقم الحقل بدلاً من الإسم في عبارات الإستعلام <<-->> من هو أضخم الجداول في قاعدة بياناتي ؟معرفة زمن تنفيذ الإجرائيات ( لتختار الطريقة الأسرع بين إجرائياتك المخزنة ) <<-->> التعامل مع الـ Rules برمجياً الحصول على آخر صف في الجدول <<-->> قراءة ملفات XML باستخدام T-SQL برمجياً (مثال مرفق)سحب بيانات ملف إكسل إلى الـ SQL Server <<-->> تشفير النسخة الاحتياطية بكلمة مرور <<-->> التخلص من البيانات المكررة <<-->> حل مشكلة التاريخ الهجريDifferential Backup بالتعريف---------- لا إله إلا الله .. محمد رسول الله

أخوكم في الله..  Imad Ozone

هذا الموضوع مغلق.

مواضيع مشابهة