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

هل من طريقة لأرسل list على شكل parametres ؟

بدأه 007up في 2 أكتوبر 2010 · 1 رد · 540 مشاهدة · في قواعد بيانات Microsoft SQL Server
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

أريد أن إنشاء stored procedure لتسجيل فاتورة مع التفاصيل الخاصة بالمشتريات التابعة لها في نفس الإجراء.

لتكون الصورة واضحة لكم ، لدي جدولين الأول لتسجيل المعلومات العامة للفاتورة كرقم الفاتورة و تاريخ إصدارها و بعض المعلومات الأخرى ، كما لدي جدول فيه تفاصيل المشتريات مثل عدد القطع التي تم شرائها و السعر الفردي للقطعة و الكمية و بعض المعلومات الأخرى

الفكرة وإنشاء stored procedure يتلقى كمدخلات (parametres) المعلومات الخاصة بالفاتورة (كرقم الفاتورة و تاريخ إصدارها ...) و بقيت التفاصيل الخاصة بالمشتريات تسجل في جدول لكل معلومة (مثال ذلك جدول توضع فيه الأسعار الفردية و جدول توضع فيه الكميات و هكذا ...) و ذلك بترتيب بحيث تكون الخانة الأولى من جدول وصف المشتريات و الخانة الأولى من جدول الكميات و الخانة الأولى من جدول الأسعار الفردية السطر الأول من الفاتورة و هكذا دواليك .

أرجو أن تكون الفكرة واضحة و أن لا يكون الجواب عن سؤالي هذا مستعصيا عليكم كما استعصى علي.

لكم مني أجمل تحية و وفقكم الله

#2

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

نعم أخي الكريم يوجد طريقة في SQL Server 2008 و اليك مثال ..

use tempdb 
go
create table bill(id int identity primary key, customer nvarchar(50))
create table bill_detail(id int identity primary key, billId int, matId int , qty int) 

go

create type BillDetails as table(billId int, matId int , qty int)
go

Create procedure bill_insert
	@customer nvarchar(50),
	@details billDetails readonly
as
	insert bill Select @customer

	insert bill_detail(billId, matId, qty) Select * from @details

go

-- test it now :)

Declare @tempDetails BillDetails
insert into @tempDetails
	Select 1, 1, 51
	union
	Select 1, 2, 10
	union
	Select 1, 3, 14
	union
	Select 1, 4, 15

exec bill_insert 

	@customer = 'Samer',
	@details = @tempDetails

go

-- check results
select * from bill
select * from bill_detail

بالمناسبة هذه الميزة قدمتها مايكروسوفت كأحدى التحسينات على SQL Server في الاصدار 2008 و سمتها Table Valued Parameters (TVPs)

و اليك ايضا هذا الرابط الذي يشرح لك كيفية استخدام هذا النوع من البارامترات من خلال ADO.NET باستخدام DataTable :

http://msdn.microsoft.com/en-us/library/bb675163.aspx

أما اذا كنت تستخدم اصدار سابق للـ 2008 فيمكنك الاستفادة من موضوع سابق و اليك الرابط :

/index.php?showtopic=86817&hl=

بالتوفيق

تم تعديل هذه المشاركة بواسطة imadouzoun في 3 نوفمبر 2010 في 13:47

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

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…