ورود

View Full Version : سوال: کاربرد stored Procedue ها در vb6



ali190
شنبه 13 فروردین 1390, 15:41 عصر
سلام
میخواستم ازتون خواهش کنم یه مقدار راجع به عملکرد و وظیفه اصلی stored Procedue ها و فرقشون با view ها و queryها توضیح بدید
سر آخر هم با یه مثال در vb6 نشون بدید چطور میشه از stored Procedue ها در vb6 استفاده کرد
ممنون و متشکر از شما دوستان عزیز
یاعلی

M_Maskout
شنبه 13 فروردین 1390, 17:48 عصر
سلام
View و Query با هم تفاوتی ندارن، و دو عنوان برای یه مفهوم هستن، هردوی اونا برای به دست آوردن زیر مجموعه‌ای از یه جدول به کار می‌رن.
اما Query یه عنوان کلی تره. و شاید به خاطر همین هم از اون تو نام SQL استفاده شده (Structural Query Language یا Structured Query Languege). اصولاً عنوان Query، هم View و هم Stored Procedure رو در ذهن تداعی می‌کنه. ولی علی القاعده با مفهوم View نزدیکی بیشتری داره.
Viewها همون چیزی هستند که اصولاً اغلب بهش می‌گن Query. مثلاً گفته می‌شه:
«از این Query استفاده کن : SELECT * FROM table1 WHERE field IS NOT NULL».
این همون View در اس کیو ال سرور یا Query در اکسس و فاکس پرو هست.
Stored Procedurها یه جورایی همون View هستن، اصولاً شاید بشه گفت یه View هم یه Stored Procedur هست. این به این خاطر هست که شما عملاً دستورات یه View رو هم ذخیره می‌کنید ولی تفاوت اصلی Stored Procedur یا همون SP با View تو این هست که View فقط از عبارات ساده و اصلی SQL (مثل SELECT، INSERT، UPDATE و ...) استفاده می‌کنه ولی SP از یه زبون که عبارات و سینتکس اون خیلی شبیه بیسیک (ملغمه‌ای از بیسیک و سی) هست بهره می‌بره و فکر می‌کنم اسمش Transact-SQL هست. یه نمونه از SPها، رویه‌های ذخیره شده تو خود SQL Server هست که اسمشون با _sp شروع می‌شه و با استفاده از اونا می‌شه بعضی از کارا (مثلاً CREAT TABLE) رو انجام داد
به کد توجه کنید؛ این کد یه نمونه از یه SP هست.

USE Northwind
GO

DROP PROCEDURE OrdcrSummary
GO

CREATE PROCEDURE OrderSummary @MaxQuantity INT OUTPUT AS
-- SELECT to return a result sel summarizing employee sa les.
SELECT Ord.ElllployeelD, SummSales = SUM(OrDet.UnitPrice * OrDet.Quantity) FROM Orders AS Ord
JOIN [Order Details] AS OrDet ON (Ord.OrderlD = OrDet.OrderlD)
GROUP BY Ord.EmployeeID
ORDER BY Ord.EmployeeID
-- SELECT to fill the output parameter with the maximum quantity from Order Details.
SELECT @MaxQuantity = MAX(Quantity) FROM [Order Details]
-- Return the number of all items ordered.
RETURN (SELECT SUM(Quantity) FROM [Order Details])
GO

-- Test the stored procedure.
-- DECLARE variables to hold the return code and Output parameter.
DECLARE @OrderSum INT
DECLARE @LargestOrder INT
-- Execute the procedure. which returns the result set from the first SELECT.
EXEC @OrderSum = OrderSummary @MaxQuantity = @LargestOrder
OUTPUT
-- Use the return code and output parameter.
PRfNT 'The size or the largest single order was: ' + CONVERT(CHAR(6), @LargestOrder)
PRINT 'The sum of the quantities ordered was: ' + CONVERT(CHAR(6), @OrderSum)

SPها کاربران رو از جزئیات جدول‌های درون پایگاه داده بی‌نیاز می‌کنه و در صورتیکه مجموعه‌ای از SPها تمام نیازهای کاربران رو پوشش بده دیگه اونا مجبور نیستن به جدولهای داخل پایگاه دسترسی مستقیم داشته باشن (Query بنویسن)
با این توصیف، احتمالاً SPها بیشتر در زمانی به درد می‌خورن که شما به عنوان مسوول انفورماتیک یه شرکت، متصدی ارائه آمار و گزارشات به مدیران و قسمت‌های ذیربط هستین. و نه به عنوان یه Software man (برنامه نویس). چون شما با Applicationی که می‌نویسین، کاربرای برنامه رو از دسترسی مسقیم به بانک اطلاعاتی بی‌نیاز می‌کنید.
هر چند فکر می‌کنم می‌شه با متد Execut از شئی ADODB.Command یه SP رو اجرا کرد (و البته مطمئن نیستم که بشه) ولی خروجی اون SP چیزی خواهد بود که احتمالاً شما فرمت (شکل و قیافه) اون رو دوست ندارین و دلتون خواهد خواست که یه شکل دیگه به کاربر نشون داده بشه. (به دوتا دستور PRINT در پایان کد بالا توجه کنین)
شاید یکی از بهترین کاربردهای SPها در نوشتن Triggerها باشه و همین.

منبع اصلی: یه PDF که از یکی از دوستان به دستم رسید و مربوط به مرکز کامپیوتر کیمیا هست.

ali190
شنبه 13 فروردین 1390, 19:48 عصر
سلام
ممنون از آقا مهدی به خاطر توضیحاتشون
میخواستم از دوستان خواهش کنم اگر در این زمینه نمونه پروژه ای دارن دریغ نکنند
ممنون و متشکر
یاعلی