ورود

View Full Version : مبتدی: کمک به برنامه نویسی که بر سر یک کوئری داغون شده . اجرای کوئری در SQL-Server



alaveh
چهارشنبه 13 مهر 1390, 17:06 عصر
سلام

چطور میشه یک کوئری که چند پارامتر ورودی داره و چند پارامتر خروجی داره رو توی خود SQL-Server توسط دلفی اجرا کرد و نتیجه رو به دلفی اورد ؟

این کوئری 2 تا Function داره و به همین خاطر نمیشه توی AdoQuery از خود دلفی اجراش کرد و ارور میده . نمیدونم چکارش کنم . تصمیم گرفتم که تویخود SQL-Server اجراش کنم .

کسی میتونه کمکم کنه ؟

کوئریم هم اینه :

create function GetTedad(@pfcode INT, @pdcode INT) returns int
as begin declare @Tedad int;
select @Tedad= sum(t2.tedade_avalie) from Tbl_avalie_salon t2 where t2.FCode = @pfcode and t2.DCode = @pdcode
return (@Tedad); end;
GO
create function getSumBSen2(@pfcode INT, @pdcode INT, @pSen INT) returns int
as begin declare @r int;
select @r= sum(t2.t_shab + t2.t_rooz) from tbl_talafat_dan t2 where t2.FCode = @pfcode and t2.DCode = @pdcode and t2.sen <= @pSen;
return (@r); end;
GO
select t1.sen, sum(t1.d_rooz) as d1, sum(t1.d_shab) as d2, sum(t1.d_rooz + t1.d_shab) as d_sum,
Round((sum((1000*(t1.d_rooz+t1.d_shab)+0.01)/((dbo.GetTedad(81, 1))-(dbo.getSumBSen2(81, 1, t1.sen))))),1) as Saraneh
from tbl_talafat_dan t1 where t1.FCode =81 and t1.DCode = 1 group by t1.sen;

یوسف زالی
چهارشنبه 13 مهر 1390, 22:35 عصر
دوست من یک مبحثی هست به نام Batch
شما در دلفی می تونی هربار یک batch اجرا کنی (به خاطر این که Go دستور استاندارد نیست)
برای همین پیشنهاد می کنم که در چند مرحله اون رو اجرا کنید.

alaveh
پنج شنبه 14 مهر 1390, 00:19 صبح
ممنون

بله با یک فانکشن کار می کنه ولی حتما راهی هست که بتونم چند فانکشن داشته باشم . اون راه چیه ؟

یوسف زالی
پنج شنبه 14 مهر 1390, 21:18 عصر
ببینید چند فانکشن رو در چند مرحله اضافه کنید.
مشکلی نیست.
اما آیا بهتر نیست این توابع رو در خود SQL بنویسید ؟
با اجرا شدن تعریف یک تابع در SQL اون تابع در دیتابیس ذخیره می شه.

alaveh
پنج شنبه 14 مهر 1390, 23:18 عصر
خوب دوست عزیز در این مورد بیشتر توضیح بدید لطفا

در ضمن بعدا که برنامه خواست به تولید انبوه برسه چطور میشه این توابع رو روی سیستم یوزر نصب کرد ؟

یوسف زالی
پنج شنبه 14 مهر 1390, 23:42 عصر
ببین دوست من شما معمولا در سیستم خودتون یک دیتابیس با تمام اشیا و جداول و توابع درست می کنید.
بعد از اون یک اسکریپت می گیری و در مقصد ران می کنی.
همین.
این اسکریپت یک فایل متنی ساده هست.
پس نگران انتقال دیتابیس خودتون نباشید.
حتی می تونید فقط قسمتی از اشیای دیتابیس خودتون رو منتقل کنید.