ویدئو های پربازدید سایت

ارسال آرایه به پروسیجر در sql و ساخت نوع داده سفارشی در sql

در بعضی از پروسیجر ها نیاز داریم که یک پارامتر از نوع آرایه ارسال کنیم ولی با توجه به اینکه نوع آرایه مناسبی در sql وجود ندارد لذا به چند روش میتوان آرایه را ارسال کرد.

در مثال زیر قصد دارم تا یک ارایه رو به دو روش مرسوم برای یک پروسیجر ارسال کنم

 

1) ارسال به روش نوع سفارشی (Custom user type)

 

این روش ایجاد یک تایپ سفارشی در sql هست که در واقع همان روش table است با این تفاوت که تایپ مورد نظر خود را از table ایجاد میکنیم و از ان در هر جایی که بخواهیم میتوانید استفاده کنیم.

 

دستور ساخت تایپ بصورت زیر است

create type [typename] definition

 

برای مثال من قصد دارم تا یک آرایه یا جدول از نوع int را ایجاد کنم و از آن در هر جایی از دیتابیس و پروسیجر ها یا ... که نیاز داشتم از آن استفاده کنم

پس بصورت دستورم رو مینویسم :

create type MyList as table(ID int)

در بالا من یک نوع تایپ با نام MyList ایجاد کردم که در واقع یک نوع جدول است با یک عضو با نام ID

تایپ مورد نظر رو میتونید در مسیر Database -> Programmability -> Types -> User-Defined Table types ببنید.

حال من قصد دارم یک پروسیجر با ورودی تایپ جدیدم ایجاد کنم که قرار است لیست محصولات با دامنه آرایه درخواستی برای من بازگرداند، پس بصورت زیر دستوراتم رو وارد می کنم  :

create procedure sp_hs_getProducts
@list MyList readonly
as
begin
select * from Products where id in (select ID from @list)
end

 

در آخر برای کار با این پروسیجر در سمت کد نویسیهایتان کافی است یک DataTable با عضو ID ایجاد و به عنوان پارامتر به این پروسیجر ارجاع دهید

 

 

2) ارسال ارایه به روش رشته و parse کردن در سمت sql

در این روش که به مراتب ساده تر است و برای ارسال داده های ساده بیشتر پیشنهاد میشود ارایه را از طریق یک رشته اراسل میکنیم در واقع پروسیجر بالا رو میتونم به روش زیر هم بازنویسی کنم:

create procedure sp_hs_getHypersourceProducts
@list nvarchar(500)
as
begin
select * from Products where id in (select value from STRING_SPLIT(@list,',')
end

 

که در اون پارامتر ما بصورت '5,10,35,24' میباشد

در صورتی که سوالی راجع به این آموزش دارید در بخش نظرات همین پست مطرح و از ارسال ان از بخش ارتباط با ما خود داری نمائید


;

ویدئو هایی که شاید بپسندید!

هم اکنون نـــظر بدهید

HyperSourCe.ir

info@hypersource.ir

کلیه حقوق برای وب سایت هایپر سورس محفوظ است
CopyRight ©2014-2021
ارتباط با ما
نام شما
ایمیل
موبایل
رمز عبور را فراموش کرده ام

چگونه میتوانم این محصول را با تخفیف دریافت نمایم ؟

لطفا منتظر بمانید. . .

پیام سیستم