PDA

View Full Version : sp برای ذخیره یا اصلاح اطلاعات



mohsenm66
جمعه 09 دی 1390, 08:06 صبح
من میخواهم یک sp بنویسم به شرح زیر :
پارامترهای ورودی = شماره دانشجویی - نیمسال تحصیلی - مبلغ شهریه ثابت و متغیر - تاریخ و شماره فیش های واریزی
1- اگر رکورد مورد نظر در جدول وجود نداشت آنرا با پارامترهای ورودی به جدول اضافه کند ولی اگر از قبل رکورد مورد نظر در جدول وجود داشت آنرا بر اساس پارامترهای ورودی update کند.
برای تشخیص اینکه اطلاعات در جدول موجود است یا خیر باید جستجو بر اساس شماره دانشجویی و نیمسال تحصیلی صورت گیرد .
2 - ممکن است تعداد فیش های واریزی 2 یا 3 عدد فیش باشد . برای ذخیره این ها چه کار باید بکنم . یعنی میشه پارامتری به صورت آرایه تعریف کرد ( به صورت دینامیک ) یا خیر ؟ (منظورم این است که یه پارامتر ورودی داشته باشیم که تعداد فیش ها را به آن بدهیم و پارامتر دوم آرایه ای باشد که تعداد عناصر ارایه همان پارامتر اولی باشد )

mohsenm66
جمعه 09 دی 1390, 12:25 عصر
دوستان کسی نیست که ما را یاری رساند
خیلی واجبه

یوسف زالی
جمعه 09 دی 1390, 15:12 عصر
سلام.
خیلی راحت در اس پی شرطتون رو چک کنید. مشکلی نیست.
if exists(select top 1 1 from tbl where...) begin update... end
else begin insert .. end

برای انتقال دو یا سه ردیف هم اصلا به صرفتون نیست در گیر استفاده از XML بشید. بهتره به سادگی دو یا سه بار اس پی رو اجرا کنید.
موفق باشید.

pashna
جمعه 09 دی 1390, 22:23 عصر
CREATE
PROCEDURE sp_UpdateStudentInfo
(

@StudentNumber INT,
@Term TINYINT,
@Amount MONEY,
@Date DATETIME
)
AS
BEGIN
UPDATE [Table]
SET Term = @Term ,
Amount = @Amount ,
[Date] = @Date
WHERE StudentNumber = @StudentNumber
IF @@ROWCOUNT= 0
BEGIN
INSERTINTO [Table]
( StudentNumber ,
Term
,Amount
,
[Date]
)
VALUES ( @StudentNumber ,
@Term
,@Amount
,@Date
)
END
END


من فکر می‌کنم این بتونه بهتون یک ایده بده، فقط میتونید جای ورودی هارو عوض کنید من همینطوری یک سری ورودی گرفتم

mohsenm66
یک شنبه 11 دی 1390, 19:30 عصر
دوست عزیز ممنون از جوابت
حالا برای پارامترهای متغیر چه کار کنم ؟(تعریف پارامتر به صورت آرایه دینامیک)

اصلا این طوری بگم : من میخواهم همزمان 3 رکورد در جدول درج کنم . به طوری که همه با هم درج شوند . چطوری این کار را انجام بدهم . یعنی چطوری باید پارامتر ارسال کنم .