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

CREATE PROCEDURE مساعدة

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

السلام عليكم

عندي جدول يحول على معلومات الزبائن التالية

CustomerID_PK, CutomerName CustomerCity, RegisterDat (datatime)

أريد كتابة التابع المعرف من قبل المستخدم الذي يعيد عدد الزبائن الذين سجلوا في المصرف بين تاريخين محددين.

هل هذه الاجرائة صحيحية .... أرجو المساعدة


CREATE PROCEDURE getcount
(@customerid int OUTPUT)
AS
BEGIN
SET @customerid = (SELECT count(customerid) from customer, where datetime between 1/1/2000 and 1/1/2010)
END;
DECLARE @customerid int;
EXECUTE getcount @customerid OUTPUT;
PRINT @customerid;

أيضا عندي جدول الحسابات اضافة الى نفس قاعدة البينات والذي يحوي الحقول التالية : AccounNumber_PK, branchName_FK, Balance

العلاقة بين الجدولين علاقة Many - to Many ويوجد جدول كسر علاقة بي الجدولين

أريد كتابة الإجرائية المخزنة لإضافة زبون مع حساب له.

هل هذه الاجرائية صحيحة :أرجو المساعدة

CREATE PROCEDURE insertcustomer (@customerid int,@custmername varchar(50))
Insertaccount (@accountnumber int )
BEGIN
Insert Into customer (customerID, customerName)
Values(@customerID, @customerName)
Insert Into account (accountnumber)
Values(@accountnumber)
END;

جزاكم الله خير

#2

السلام عليكم.

الإجراءيجب أن يكون كالتالي:

CREATE PROCEDURE getcount
(@customerid int OUTPUT)
AS
BEGIN
SET @customerid = (SELECT count(customerid) from customer where datetime between '1/1/2004' and '1/1/2010')
END;

و لكن يفضل تمرير التاريخين المحددين إلى الاجراء كالتالي:

CREATE PROCEDURE getcount
(@StartDate DATETIME,
@EndDate DATETIME,
@customerid int OUTPUT)
AS
BEGIN
SET @customerid = (SELECT count(customerid) from customer where datetime between @StartDate and @EndDate)
END;

DECLARE @customerid int;
EXECUTE getcount  '1/1/2000', '1/1/2010', @customerid OUTPUT;
PRINT @customerid;

إجراء إضافة زبون مع حساب له:

CREATE PROCEDURE insertcustomer (@customerid int,@custmername varchar(50), @accountnumber int)
AS
BEGIN
-- هنا يتم الإدخال لجدول العملاء
Insert Into customer (customerID, customerName)
Values(@customerID, @customerName)

-- هنا يتم الإدخال لجدول الحسابات
Insert Into account (accountnumber)
Values(@accountnumber)

-- هنا يتم الادخال لجدول كسر العلاقة
INSERT INTO customeraccount (customerID,accountnumber)
VALUES (@customerID,@accountnumber)

END;
#3

السلام عليكم

لكن مادام هناك اكثر من جملة ادخال يجب استخدام transaction كمايلي :

SET XACT_ABORT ON
 begin tran
insert ...
insert ...


comiit tran

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