PDA

View Full Version : ایراد در کدنویسی sql



AmirAlimadadi
چهارشنبه 19 تیر 1387, 14:30 عصر
سلام دوستان
من یه sp دارم، کارش اینه که دوتا آرگومان می گیره، بر اساس اینکه kind چه مقداری هست سه query متفاوت رو اجرا می کنه، ولی یه مشکلی هست که من متوجه نمی شم. این sp اجرا نمی شه، و من هم توی محیط sql express دارم کار می کنم ونمی دونم که ایرادش چیه اگه ممکنه کمک کنین

ALTER PROCEDURE dbo.SelectWorks /* if kind = 0 return all, if kind = 1 return normal, if kind = 2 return extended*/

(
@Date nchar(8),
@Kind int = 0
)


AS

if @Kind = 0 begin

select * from [work] where ( FinishDate >= @Date)
return

end

if @Kind = 1 begin

select * from [work] where ( Extended = 0 and FinishDate >= @Date)
return

end

if @Kind = 2 begin

select * from [work] where ( Extended = 1 and FinishDate >= @Date)
return

end

RETURN

ASKaffash
چهارشنبه 19 تیر 1387, 14:51 عصر
سلام
چرا به این شکل نمی نویسی ؟



Select *
From [Work]
Where Extended =(Case @Kind
When 0 Then Extended
Else @Kind-1
End)
and FinishDate>=@Date

AmirAlimadadi
چهارشنبه 19 تیر 1387, 15:12 عصر
سلام
چرا به این شکل نمی نویسی ؟



Select *
From [Work]
Where Extended =(Case @Kind
When 0 Then Extended
Else @Kind-1
End)
and FinishDate>=@Date


از راهنمایی موثرتون متشکرم، اما می خوام بدونم که آیا نمی شه چند تا query به شکل select,update,insert,delete و ... رو توی یه sp بنویسیم. اگه می شه چه تغییر خاصی باید داده بشه؟

ASKaffash
چهارشنبه 19 تیر 1387, 15:42 عصر
سلام
میتونی بنویسی مشکلی نیست فقط باید برنامه صدا کننده در خصوص مقدار یا جدول بازگشتی آگاه باشه یعنی اینکه وقتی Delete صورت میگیرد ممکن است شما نخواهید چیزی برگردانید ولی از یک Select استفاده کنید شما تعدادی رکورد را ارسال میکنید. باز هم اگر بیشتر تشریح کنید خوب است