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

كيف تمرر مصفوفة إلى الإجرائيات المخزنة

مغلق
بدأه imadouzoun في 4 فبراير 2006 · 2 رد · 1,770 مشاهدة · في قواعد بيانات Microsoft SQL Server
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

كيف تمرر مصفوفة إلى الإجرائيات المخزنة باستخدام دالة :

بصراحة كنت بحاجة ماسة لتمرير مصفوفات إلى إجراء مخزن فقمت بإنشاء الدالة التالية , و قد أحببت أن أشارك بها

عسى و لعل أن تكون مفيدة :

الطريقة المستخدمة في هذه الدالة هي تمرير المصفوفة إلى الدالة على شكل سلسلة يفصل بين عناصرها محرف

تحدده بنفسك على أن يكون هذا المحرف غير مستخدم في قيم السلاسل و تقوم هذه الدالة بإعادة جدول مؤلف من حقلين :

رقم تعريفي و عنصر المصفوفة .

لاحظ ما سوف تفعله الدالة :

SELECT * FROM 
 dbo.SplitIntoTable('GHUG,HJGFTR,AW,OU,7656,P' ,  ',')

----------------------
ID        |  strVal
----------------------
0	|  GHUG
1	|  HJGFTR
2	|  AW
3	|  OU
4	|  7656
5	|  P

الآن و ببساطة يمكنك أن تمرر مؤشر بسيط على الجدول الذي تعيده هده الدالة لتستخدم عناصر المصفوفة :

create function SplitIntoTable
(
  @statement nvarchar(2000) ,
  @separator nvarchar(10)
)
RETURNS @Table Table(id int, strVal nvarchar(2000))
as
begin

if(@statement = '')or(@separator = '')
  GoTo End_Prepare_Fields

  declare @i int , @i1 int 
  select @i1 = 1 , @i = CHARINDEX (@separator, @statement , 1)

  if(@i = 0)
  begin
    if(RTRim(LTRim(@statement)) = '')
      Insert Into @Table Values(0 , Null)     
    else
      Insert Into @Table Values(0 , @statement )     
  end
  else
  Begin
    declare @val nvarchar(100) , @counter int 
    select @val = '' , @i = -1 , @i1 = 0 ,@counter = 0

    while (@i <> 0)
    begin
      set @i1 = @i + 1 
      select @i = CHARINDEX (@separator, @statement , @i + 1) 

      if(@i - @i1)> 0
        set @val = substring(@statement , @i1 , @i - @i1) 
      else
        set @val = substring(@statement , @i1 , len(@statement)- @i1 + 1)

      if(@val = '')
        Insert Into @Table Values(@counter , Null)    
      else      
        Insert Into @Table Values(@counter , @val)   
         
      set @counter = @counter + 1
    end
  end
End_Prepare_Fields:

 return 
end

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

يمكننا الان الوصول إلى كل عنصر من المصفوفة باستخدام مؤشر على النحو التالي :

Declare c cursor for 
SELECT * FROM 
 dbo.SplitIntoTable('GHUG,HJGFTR,AW,OU,7656,P' ,  ',')

declare @id int , @el nvarchar(2000)
fetch next from c into @id , @el

while @@fetch_status = 0
Begin 
  Print @el 
  fetch next from c into @id , @el
End
Close c 
Deallocate c

المبرمج عماد .. B) B)

تم تعديل هذه المشاركة بواسطة imadouzoun في 4 فبراير 2006 في 23:36

1

دروس و كتب مفيدة----------------------كتيب الإجرائيات المخزنةتعرف على اللغة 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

#2

جزاك الله كل الخير أخى عماد

ووفقك الله للخير ونفعنا بك

يا حى يا قيوم برحمتك أستغيث اصلح لى شأنى كله ولا تكلنى إلى نفسى طرفة عين

اللهم أعنا على ذكرك وشكرك وحسن عبادتك

اللهم انك عفو كريم حليم تحب العفو فاعفو عنا

اللهم إنى أسألك رضاك والجنة وأعوذ بك من سخطك والنار

اللهم إرحمنا فوق الأرض وإرحمنا تحت الأرض وإرحمنا وإعتق رقابنا يوم العرض

اللهم لا تدع لنا ذنبًا إلا غفرته ولا همًا إلا فرجته ولا مريضًا ولا دينًا إلا قضيته ولا عيبا إلا سترته ولا حاجًا هى لك رضا إلا قضيتها

اللهم انى أسألك موجبات رحمتك وعزائم مغفرتك والسلامة من كل إثم والغنيمة من كل بر والفوز بالجنة و النجاة من النار اللهم أمين يا رب العالمين

#3

ولو هذا واجبي كمسلم (زكاة العلم نشره) ..

أليس كذلك .. :) :)

عماد .. B)

دروس و كتب مفيدة----------------------كتيب الإجرائيات المخزنةتعرف على اللغة 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

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

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