PDA

View Full Version : ارسال آرایه یا رشته ای به Stored Procedure



Davood_amega
پنج شنبه 25 شهریور 1389, 19:25 عصر
با سلام به همه مهندسین عزیز
با یک مثال می خواهم کارمو توضیح بدهم .
Room: شماره اتاق(R_ID) ، ساعت(R_Time) ، تاریخ(R_Date) ، نام میهمان(R_Name)
در جدول Room بنده می خواهم از ویژوال استودیو شماره اتاقهای که میهمان رزرو می کند را به Stored Procedure ارسال کند و این Stored Procedure برحسب تعداداتاقها سطر اضافه کند . که امکان دارد یک اتاق یا چندین اتاق به Stored Procedureتحویل دهد .
مثلا اگه میشد پارامتری که با کاما (، یا ,) ارسال می کردیم بسیار خوب بود .
در این لینک (http://sqlserver2008.persianblog.ir/tag/table_type) توضیحاتی در مورد یکی از امکانات جدیدی که در Sql Server 2008 تعبیه شده تو ضیحاتی داده که نتونستم منظورشو متوجه شم و گفته که قبل از نسخه 2008 راه حلی که برای این کار موجود بود استفاده از متد split بود که یک رشته را میتوانست تکه تکه کند. البته تکنیکهای دیگری نیز مثل استفاده از xml بود. استفاده از Dynamic SQL ریسک حملات SQL Injection را بالا میبرد. استفاده از split و xml هم بسیار پیچیده بود.

Davood_amega
جمعه 26 شهریور 1389, 10:43 صبح
در این لینک (http://blogs.techrepublic.com.com/datacenter/?p=375) هم مطلبی پیدا کردم اما خیلی پیچیده است .
99.9 درصد راه بهتری وجود داره !

Davood_amega
جمعه 26 شهریور 1389, 11:31 صبح
اینم یه مثال (http://databases.aspfaq.com/database/how-do-i-simulate-an-array-inside-a-stored-procedure.html) که از Dynamic Sql استفاده کرده !

ali_kolahdoozan
جمعه 26 شهریور 1389, 11:40 صبح
http://www.sqlservercentral.com/articles/Array/70702

Davood_amega
جمعه 26 شهریور 1389, 14:21 عصر
ممنون منم همینو می خواستم اما نمیتونم کد تحلیل کنم و برای برنامه استفاده کنم . من حالا می خوام روی برنامه خودم اینو تست کنم که جدول نمونه اش در زیر آمده است .

CREATE TABLE [dbo].[Rooms](
[R_ID] [int] IDENTITY(1,1) NOT NULL,
[R_Time] [time](0) NOT NULL,
[R_Date] [date] NOT NULL,
[R_Name] [nvarchar](50) NOT NULL,
CONSTRAINT [PK_Rooms] PRIMARY KEY CLUSTERED
(
[R_ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]ضمنا یه اشتباهی که در Syntaxاش بود ، به جای :

Set @sState varchar(8000)باید از این استفاده کنیم .

Declare @sState varchar(8000)

ali_kolahdoozan
جمعه 26 شهریور 1389, 14:43 عصر
کمی Generation فکری هم خوبه . قرار نیست کسی عین جوابت رو بهت بده . اگر هدفت برنامه نویسی است باید مثلا یک چیزی مثل این دیگه کارت رو راه بندازه . کسی اینو نمیتونه برات عین چیزی که میخواهی Customise کنه

javad_mjt
جمعه 26 شهریور 1389, 22:31 عصر
سلام این روشم به نظر من بد نیست
آرایه رو تبدیل به یک XML و بعد در SP استفاده می کنیم.
این لینک رو یه برسی کنین.
http://weblogs.asp.net/jgalloway/archive/2007/02/16/passing-lists-to-sql-server-2005-with-xml-parameters.aspx

Davood_amega
دوشنبه 29 شهریور 1389, 10:47 صبح
متاسفانه مشکلم اینجاست که نمیتونم متوجه بشم !
مثلا تو این لینک (http://www.30sharp.com/article/13/92/2/%D8%A8%D8%B1%D8%B1%D8%B3%DB%8C-multi-statements-%D8%AF%D8%B1-sql-server-%D9%87%D9%85%D8%B1%D8%A7%D9%87-%D8%A8%D8%A7-%D8%AA%D8%B4%D8%B1%DB%8C%D8%AD-%D8%AA%D8%A7%D8%A8%D8%B9-split.aspx) کامل نوشته اما اصلا ار کدش سردر نمی یارم !