PDA

View Full Version : مبتدی: ایجاد Stored Procedure جستجو با کنترل روی متغیرها



kastakoorta
دوشنبه 08 اسفند 1390, 20:02 عصر
با سلام خدمت استاد .
چطور میشه SP نوشت که روی متغیرها کنترل داشت ، مثلا 3 تا متغیر "فروشنده" ، " شماره سریال" داشت و بررسی کرد اگر هرکدام مقدارش وارد شده بود تو نتیجه جستچو تاثیر داشته باشه .
مثال :

ALTER PROCEDURE Device_Select_Join_With_Filter
@OSTID int,
@DID int,
@SName varchar(255)
@Serial varchar(255)
AS
SELECT Tbl_Device.DVID, Tbl_Device.DVSerial, Tbl_Device.DVBuyDate, Tbl_Device.DVAmvalCode, Tbl_DeviceCat.DTitle, Tbl_Sellers.SName, Tbl_Cities.CTName
FROM Tbl_Device INNER JOIN
Tbl_DeviceCat ON Tbl_Device.FK_DID = Tbl_DeviceCat.DID INNER JOIN
Tbl_Sellers ON Tbl_Device.FK_SID = Tbl_Sellers.SID INNER JOIN
Tbl_Cities ON Tbl_Device.FK_CTID = Tbl_Cities.CTID
where Tbl_Device.FK_OSTID = @OSTID

حالا میخوام در قست

where Tbl_Device.FK_OSTID = @OSTID
مثلا بررسی کنم اگر مقداری برای متغیر @Serial داده شده بود به ادامه Where اضافه بشه .
ممنون میشم کمکم کنید

Rohollaes
دوشنبه 08 اسفند 1390, 20:26 عصر
سلام , باید از بلاک های if , else استفاده کنی و برای null بودن متغیر ها هم از


if @ostad is null
begin
inja code dar soorate khali boodane
end
else
begin
inja code dar soorate khali naboodane moteghayere
end


امیدوارم مطلبو فهمیده باشی. بازم اگه مشکلی بود تا مثال بزارم

kastakoorta
دوشنبه 08 اسفند 1390, 22:20 عصر
با تشکر از جوابتون ، در حالتی که شما نوشتید باید تمام حالتهای متغیرها بررسی بشه که این حالت زمانی که متغیرها کم باشه خوبه ولی شما فرض کنید میخوایم با پر بودن یا نبودن 10 متغیر SP رو طراحی کنیم .
من یه شبه کد که مد نظرم هست رو مینویسم ، شما بفرمایید با چه سینتکس SQL میشه پیاده سازیش کرد

ALTER PROCEDURE Device_Select_Join_With_Filter
@OSTID int,
@DID int,
@SName varchar(255),
@Serial varchar(255)
AS
SELECT Tbl_Device.DVID, Tbl_Device.DVSerial, Tbl_Device.DVBuyDate, Tbl_Device.DVAmvalCode, Tbl_DeviceCat.DTitle, Tbl_Sellers.SName, Tbl_Cities.CTName
FROM Tbl_Device INNER JOIN
Tbl_DeviceCat ON Tbl_Device.FK_DID = Tbl_DeviceCat.DID INNER JOIN
Tbl_Sellers ON Tbl_Device.FK_SID = Tbl_Sellers.SID INNER JOIN
Tbl_Cities ON Tbl_Device.FK_CTID = Tbl_Cities.CTID
where Tbl_Device.FK_OSTID = @OSTID
IF @Sname <> null
" AND Tbl_Sellers.SName=@SName"
IF @Serial <> null
" AND Tbl_Device.DVSerial=@Serial"
.
.
.
و همینطوری تا آخر متغیرهایی که مقداردهی شدن به ادامه Query اضافه بشه .
ممنون میشم کمک کنید .