PDA

View Full Version : +گفتگو+مبتدی: کار با Store Procedure



JaVa
پنج شنبه 22 تیر 1391, 16:56 عصر
با سلام...

دوستان که سابقه کار با Store Procedure دارن من یه چندتایی سئوال کوچیک دارم که امیدوارم پاسخ گو باشید:

اول روش ایجاد یه Store Procedure در sQl :

وارد بانک اطلاعاتی SQL Server شده ، پس از باز کردن بانک مورد نظر در قسمت Programmability وارد بخش Stored Procedure شوید .
بر روی Stored Procedure کلیک راست کرده و New Stored Procedure را انتخاب نمایید .
احتمالا کد های پیشفرضی را در این صفحه مشاهده می کنید ، من همه اون کد هارا پا کرده و به صورت زیر کد نویسی کردم:

البته اینم بانکم:


89582

اینهم کدهایی که نوشتم با توضیحات:چشمک:


/*درج در جدول اعضا*/
Alter PROCEDURE DBO.StoredProcedure14
(
@m_Code int,
@m_Fname nvarchar(50),
@m_Lname nvarchar(50),
@M_SH int,
@m_Father nvarchar(50),
@M_Birthday nvarchar(11),
@M_Gride nvarchar(30),
@M_Ozviat nvarchar(11),
@M_Zamen nvarchar(50),
@M_ZamenTell nvarchar(15),
@M_adress nvarchar(150),
@M_Tell nvarchar(15),
@M_Pic image
)
AS
INSERT Into TBL_Member
(M_Code,M_Fname,M_LNAme,M_SH,M_Father,M_Birthday,
M_Gride,M_Ozviat,M_Zamen,M_ZamenTell,M_adress,M_Te ll,
M_Pic)
Values
(@m_Code,@M_Fname,@M_LNAme,@M_SH,@M_Father,@M_Birt hday,
@M_Gride,@M_Ozviat,@M_Zamen,@M_ZamenTell,@M_adress ,@M_Tell,
@M_Pic)
return

/*حذف از جدول اعضا */
alter Procedure dbo.del
(
@m_Code int
)
as
Delete From TBL_Member Where(m_code)
return


/*به روز رسانی جدول اعضا*/
Alter Procedure dbo.StoredProcedure1
(
@m_Code int,
@m_Fname nvarchar(50),
@m_Lname nvarchar(50),
@M_SH int,
@m_Father nvarchar(50),
@M_Birthday nvarchar(11),
@M_Gride nvarchar(30),
@M_Ozviat nvarchar(11),
@M_Zamen nvarchar(50),
@M_ZamenTell nvarchar(15),
@M_adress nvarchar(150),
@M_Tell nvarchar(15),
@M_Pic image
)
as
Update TBL_Member
set (m_fname=@m_Fname,m_lname=@m_lname,M_SH=@M_SH,
M_Father=@M_Father,M_Birthday=@M_Birthday,M_Gride= @M_Gride,
M_Ozviat=@M_Ozviat,M_Zamen=@M_Zamen,M_ZamenTell=@M _ZamenTell,
M_adress=@M_adress,M_Tell=@M_Tell,M_Pic=@M_Pic)
Where (m_code=@m_code)
return


اما خطایایی که میگیره.

89583
(این رو هم بگم من اولین برنامه ای که توی SQL می نویسم.)

JaVa
پنج شنبه 22 تیر 1391, 18:45 عصر
سئوال دیگه ای که داشتم این بود که برای هر جدول باید یه Store Procedure جدید ساخت ؟
اگه سئوالات یه کم مبتدی دیگه ببخشید.

مهدی هادیان2
پنج شنبه 22 تیر 1391, 20:04 عصر
بسم الله الرحمن الرحیم
با سلام
یه SP درج براتون می گذارم.

/****** Object: StoredProcedure [dbo].[SPInsCustomer] Script Date: 07/12/2012 19:27:48 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[SPInsCustomer]
@CustomerCode bigint,
@Name nvarchar(30),
@Family nvarchar(30),
@PhoneNumber varchar(13),
@Mobile varchar(13),
@Date date,
@fieldcode int,
@listscode int,
@documentcode int,
@NameOfUnivercity nvarchar(30),
@acquaintancecode int,
@Email varchar(20),
@Address nvarchar(200),
@typeofunivercitycode int


AS
/* SET NOCOUNT ON */
INSERT INTO Customer
(CustomerCode, Name, Family, PhoneNumber, Mobile, Date, fieldcode, listscode,
documentcode, NameOfUnivercity, acquaintancecode, Email, Address,
typeofunivercitycode)
VALUES (@CustomerCode, @Name, @Family, @PhoneNumber, @Mobile, @Date, @fieldcode, @listscode,
@documentcode, @NameOfUnivercity, @acquaintancecode, @Email, @Address,
@typeofunivercitycode)


RETURN

روش کار من اینه که برای هر کدام از عملیات درج، حذف و ... یک SP می نویسم.
موفق باشید

JaVa
جمعه 23 تیر 1391, 12:34 عصر
بسم الله الرحمن الرحیم
با سلام
یه SP درج براتون می گذارم.

با تشکر از جناب هادیان :

پس کدهایی که من نوشتم اشتباه.
لطفا اگه می خواید جواب بدید به سئوالات که مطرح کردم پاسخگو باشید.

لطفا راهنمایی کنید.* با تشکر

aslan
جمعه 23 تیر 1391, 19:27 عصر
Create PROCEDURE DBO.StoredProcedure14

(

@m_Code int,

@m_Fname nvarchar(50),

@m_Lname nvarchar(50),

@M_SH int,

@m_Father nvarchar(50),

@M_Birthday nvarchar(11),

.......

lastmory
جمعه 23 تیر 1391, 21:07 عصر
برای هر جدول باید یه Store Procedure جدید ساخت ؟
سلام
بله برای هر جدول باید یه Sp یا بهتره بگم که برای
Insert
Update
Delete
SelectAll
و یا هر چیز دیگه ای که مربوط به کار با یه جدول خاص میشه ، باید SP بنویسید
و اینکه همه ی این کارا رو برای یه جدول خاص ، توی یه SP بنویسی ، اصلا استاندارد نیست
چند تا مشکل داره
یکی اینکه از خوانا بودن کد جلوگیری میشه
دو اینکه با یه سری پارامترهای بلا استفاده برای بعضی از دستورات توی SP ت مواجه میشی
سه اینکه بیهوده خودتو درگیر پیچیدگی میکنی
و خیلی از مشکلاتی که موقع کار کردن با این روش ، بهش بر میخوری
اما اگر تفکیک شده کارتو ببری جلو خیلی کمتر با پیچیدگی روبرو میشی
موفق باشی

JaVa
یک شنبه 25 تیر 1391, 19:37 عصر
با سلام...

دوستان SPها رو میشه در بانک Access تعریف کرد یا فقط مختص SQL ????


با تشکر.*

Galawij
یک شنبه 25 تیر 1391, 19:49 عصر
دوستان SPها رو میشه در بانک Access تعریف کرد یا فقط مختص SQL ????
سلام،
شما می تونید تو دوتاش SP تعریف کنید، و تو برنامه روال ها رو فراخوانی کنید.