ورود

View Full Version : تفاوت بین توابق و Sp های Sql Server و نحوه استفاده از آنها در دلفی



hadisalahi2
چهارشنبه 23 شهریور 1390, 21:20 عصر
با سلام به همگی دوستان.
فرق بین Function ها و Stored Procedure های sql server در چیه؟
و چطور میشه از Function های اس کیو ال سرور در دلفی استفاده کرد؟
یا حق

Felony
چهارشنبه 23 شهریور 1390, 22:02 عصر
فرق بین Function ها و Stored Procedure های sql server در چیه؟
Stored Procedure ها در SQL Server نقشی مانند Function ها در Delphi رو دارند ، در حقیقت Stored Procedure ها Function هایی هستند که در SQL Server ایجاد میشن و میتوان آنها را با توجه به نامشان از طریق برنامه یا ... صدا زد .

Stored Procedure ها دارای مزایایی از قبیل سرعت اجرای بالاتر ، امنیت بیشتر و ... در مقابل کدهای TSQL ی هستند که مستقیما داخل برنامه نوشته میشن .


و چطور میشه از Function های اس کیو ال سرور در دلفی استفاده کرد؟
منظور همان Stored Procedure ها هست دیگه ؟ بارها و بارها در موردش بحث شده و خوشبختانه مشکل سیستم جست و جوی سایت هم رفع شده !

یوسف زالی
پنج شنبه 24 شهریور 1390, 22:54 عصر
آقای تاجیک کمی اشتباه می کنی.
با اجازه:

توابع:
--------------
دارای یک خروجی از هر نوعی هستند
نمی توانند از ورودی های Output استفاده کنند
در توابع نمی شود اطلاعات را دستکاری کرد
نمی توان در توابع از جداول موقتی # دار استفاده کرد
نمی توان از Exec استفاده کرد

پروسیجر:
--------------------------
می توانند دارای ورودی های Output باشند
می توانند اطلاعات را دستکاری کنند
می توانند خروجی نداشته باشند اما اگر نیاز باشد فقط از نوع عددی می توانند خروجی بدهند
می توانند از Exec و جداول # دار استفاده کنند

و چند تا تفاوت ریز دیگه
برای استفاده از توابع هم دقیقا مثل پروسیجر ها از اونها استفاده میشه:


ADOStoredProc1.Parameters.ParamByName('@Date').Val ue := '90/05/23';
ADOStoredProc1.ExecProc;
Ret := ADOStoredProc1.Parameters.ParamByName('@Return_Val ue').Value;
ShowMessage(Ret);

Felony
جمعه 25 شهریور 1390, 06:27 صبح
آقای تاجیک کمی اشتباه می کنی.
شما منظور من رو درست متوجه نشدید :


Stored Procedure ها در SQL Server نقشی مانند Function ها در Delphi رو دارند
گفتم نقشی مانند Function ها در Delphi ؛ منظور من این بود که StoredProcedure ها یکسری از کارها رو مثل Function هایی که در دلفی مینویسید به صورت یکجا انجام میدن نه اینکه شبیه اون ها هستند یا خواص اونها رو دارند یا نوعی بر میگردونن یا ... !

فکر کنم باید مینوشتم Procedure ها در Delphi تا اشتباه برداشت نشه ، البته شاید در اون صورت هم توفیقی نمیکرد .


دارای یک خروجی از هر نوعی هستند
نمی توانند از ورودی های Output استفاده کنند
در توابع نمی شود اطلاعات را دستکاری کرد
نمی توان در توابع از جداول موقتی # دار استفاده کرد
نمی توان از Exec استفاده کرد
همونطور که گفتم منظور من رو درست متوجه نشدید .

hadisalahi2
شنبه 26 شهریور 1390, 21:04 عصر
با تشکر از همه دوستان
توضیحات yousijoon (http://barnamenevis.org/member.php?70247-yousijoon) فکر میکنم کامل بود.
مگه با Sp ها نمی شه مقداری رو به برنامه برگردوند؟ این کار رو با Sp ها هم میشه انجام داد پس چه تفاوت و یا نیازی به استفاده از Function ها است؟
یا حق

یوسف زالی
یک شنبه 27 شهریور 1390, 09:17 صبح
ببینید مقادیری که SP ها برمیگردونند عددی هست.(سوای فیلدهای Output که داستانش جداست)
اما معمولا در دلفی مستقیم درگیر توابع نمی شن. بلکه در SP های SQL کاربرد داره.
مثلا ممکنه در Select ی که می نویسیم لازم میشه تفاوت دو تاریخ رو از هم بدونبم. یک چیزی مثل این:
select dbo.diffdate(d1, d2) as datediffrent, customer from tbl
در اینجا محاسبات در تابع انجام میشه و نتیجه در Select برمی گرده.