ورود

View Full Version : نوع داده جدید در sql



a_pirhayati
شنبه 14 شهریور 1383, 17:43 عصر
سلام.
می خواستم بپرسم آیا میشه توی sql یک نوع داده جدید تعریف کرد و توی جدول برای یکی از فیلدها این نوع داد را بکار برد؟
مثلا نوع داده جدید از اعمال یک پروسیجر به یک نوع داده موجود ایجاد میشود.
لطفا اگه امکان داره توضیح بدین چطوری؟
با تشکر.

vadood
شنبه 14 شهریور 1383, 22:58 عصر
می تونین با استفاده از sp زیر از روی تایپ های داده موجود یه تایپ داده جدید درست کنید و از اون استفاده کنید. مثال



EXEC sp_addtype fax, 'varchar(24)', 'NULL'

AminSobati
یک شنبه 15 شهریور 1383, 14:19 عصر
دوست عزیزم،
در SQL Server 2000 دو نوع Type وجود داره:
1) System Defined Type
2) User Defined Type
ولی گروه دوم (UDT) برپایه گروه اول ساخته میشن و در حقیقت یک تایپ کاملا جدید نیستن.
اما سوال رو شما به نحوی مطرح کردید که من یقین ندارم به طور دقیق متوجه منظور شما شده باشم. ظاهرا شما نیاز دارید که نتیجه اجرای یک Stored Procedure رو به یک فیلد ببرید یا شبیه به این؟!
لطفا بیشتر راهنمایی بفرمایید.
موفق باشید،
امین ثباتی MCSD

a_pirhayati
یک شنبه 22 شهریور 1383, 22:01 عصر
با تشکر از راهنمایی های شما.
بله می خواستم که نتیجه اجرای یک Stored Procedure را به یک فیلد ببرم.مثلا می خوام به جای وارد کردن تاریخ میلادی نتیجه اجرای یک Procedure رو که این تاریخ رو به شمسی تبدیل می کنه به فیلد ببرم و مستقیما تاریخ شمسی وارد کنم.

AminSobati
دوشنبه 23 شهریور 1383, 00:56 صبح
چرا از فانکشن استفاده نمیکنید؟ (...Create Function)
چون فانکشن دارای انعطاف پذیریهای خاص خودشه و در بعضی حالتها به Stored Procedure برتری داره! حتما یکبار آزمایشش کنین...

a_pirhayati
پنج شنبه 26 شهریور 1383, 19:45 عصر
میشه توضیح بدین چطوری ؟چون من تازه کار با SQL رو شروع کردم.
در ضمن اگه بخوام تو محیط برنامه نویسی این فیلد رو پر کنم تابع رو کجا باید استفاده کنم ؟
تو کد نویسی یا تو sql ؟(فرقی نمیکنه؟)
تشکر از راهنماییتون.

AminSobati
جمعه 27 شهریور 1383, 19:32 عصر
دوست عزیزم،
برای نمایش کاربرد Function، یک مثال کوچک براتون میزنم. این Function کارش اینه که یک string دریافت کنه و کاراکترهای اول و آخر اون رو برگردونه:


create function MyFunc
(@Param1 varchar(50))
returns char(2)
as
begin
declare @tmp char(2)
set @tmp= left(@Param1,1) + right(@Param1,1)
return @tmp
end

حالا یک جدول میسازیم متشکل از دو فیلد. فیلد اول مقدار بهش میدیم ولی مقدار فیلد دوم بصورت خودکار با استفاده از MyFunc بدست میاد:


create table MyTable (
c1 varchar(20),
c2 as dbo.MyFunc(c1))

حالا مقدار میدیم به فیلد اول:

insert MyTable(c1) values('Hello World')
insert MyTable(c1) values('This is a sample!')

و مشاهده نتیجه:

select * from MyTable

شما میتونین بر همین اساس، تابعی بنویسید که تاریخ میلادی رو به عنوان ورودی دریافت کنه و تاریخ شمسی به عنوان string برگردونه و فیلد موجود در جدول مقدارش رو بر اساس این تابع بدست بیاره.
البته در هر زبان برنامه نویسی، امکان درست کردن توابع وجود داره و شما میتونین مقدار مورد نظر رو در Client محاسبه کنین و فقط به جدول Insert انجام بدین.
موفق باشید،
امین ثباتی MCSD

a_pirhayati
شنبه 04 مهر 1383, 12:32 عصر
خیلی ممنون از راهنمایتون.

AminSobati
شنبه 04 مهر 1383, 12:45 عصر
موفق باشین :)