خوش آموز درخت تو گر بار دانش بگیرد، به زیر آوری چرخ نیلوفری را
استفاده از SP_RENAME در SQL Server
Stored Procedure سیستمی SP_RENAME یکی Stored Procedure هایی است که از آن برای تغییر نام دادن Object هایی که توسط کاربران ایجاد شده، می تواند مورد استفاده قرار گیرد. این object می توند نام table، نام index، نام column، یا alias name باشد.
Syntax استفاده از SP_RENAME بصورت زیر می باشد:
اگر شی object مورد تغییر نام ستونی در جدول باشد، از table.column یا schema.table.column استفاده می کنیم.
اگر شیئی که تغییر نام داده می شود یک index باشد ، پس از table.index یا schema.table.index استفاده می کنیم.
در قسمت object_type که نوع شیء را مشخص می کند، بصورت پیشفرض دیتاتایپ آن varchar(13 و Null می باشد.
برای اینکه بصورت واقعی از Stored Procedure سیستمی SP_RENAME استفاده کنیم، یک جدول ایجاد کرده و مقادیری را در آن اضافه می کنیم:
در Select زیر همه رکوردهای جدول فوق نمایش داده می شود:
حالا با استفاده از SP_RENAME، قصد تغییر نام دادن جدولی که هم اکنون کاربر ایجاد کرده است، می کنیم. نام جدول از ZXY به XYZ تغییر خواهد کرد.
حال دوباره Select فوق را اجرا کنید و ببینید آیا هنوز نام جدول ZXY است یا به نام جدید تغییر کرده است.
همانطور که مشاهده می کنید، خطای invalid object در خروجی کوئری نشان داده شد و این نشان از تغییر نام موفقیت آمیز نام جدول دارد.
خب، حالا با نام جدید(XYZ) رکوردهای جدول را Select می کنیم.
حالا با استفاده از SP_RENAME قصد داریم نام یک ستون را در این جدول تغییر دهیم.
ستون Name از جدول XYZ را به EmpName تغییر خواهیم داد.
حالا اگر دوباره رکوردهایجدول را Select کنید، خواهید دید که ستون Name به نام مورد نظر تغییر کرده است.
حالا با استفاده از SP_RENAME، قصد تغییر نام index از این جدول را داریم. از آنجایی که هیچ ایندکسی نداریم، ایتدا یک ایندکس ایجاد می کنیم:
همانطور که مشاهده می کنید، نام ایندکس idx_colEmpName می باشد و ما می خواهیم نام از idx_colEmpName به idx_EmpName تغییر دهیم.
حالا با استفاده از Stored Procedure سیستمی SP_HELP، بررسی می کنیم که آیا نام index مورد نظرما با موفقیت تغییر کرده یا خیر:
همانطور که مشاهده می کنید، تغییر نام ایندکس با موفقیت انجام شد.
دقت داشته باشید که تغییر هر مقداری از جدول، در Stored Procedure ها و View هایی که از آن جدول استفاده می کنند، اعمال نخواهد شد و باید در SP ها و View ها و غیره… تغییرات اعمال شود وگرنه با خطا مواجه خواهید شد.
Syntax استفاده از SP_RENAME بصورت زیر می باشد:
EXEC sp_rename [ @object_name = ] 'object_name' ,
[ @new_name = ] 'new_name' [ , [ @object_type = ] 'object_type' ]
اگر شی object مورد تغییر نام ستونی در جدول باشد، از table.column یا schema.table.column استفاده می کنیم.
اگر شیئی که تغییر نام داده می شود یک index باشد ، پس از table.index یا schema.table.index استفاده می کنیم.
در قسمت object_type که نوع شیء را مشخص می کند، بصورت پیشفرض دیتاتایپ آن varchar(13 و Null می باشد.
برای اینکه بصورت واقعی از Stored Procedure سیستمی SP_RENAME استفاده کنیم، یک جدول ایجاد کرده و مقادیری را در آن اضافه می کنیم:
Create table ZXY (Sno int , Name varchar(50))
Insert into ZXY values(1, 'Anthony Carlos')
Insert into ZXY values(2, 'Mark Jr')
Insert into ZXY values(3, 'Jackson Morey')
در Select زیر همه رکوردهای جدول فوق نمایش داده می شود:
Select * from ZXY
حالا با استفاده از SP_RENAME، قصد تغییر نام دادن جدولی که هم اکنون کاربر ایجاد کرده است، می کنیم. نام جدول از ZXY به XYZ تغییر خواهد کرد.
EXEC SP_RENAME 'dbo.ZXY' , 'XYZ'
حال دوباره Select فوق را اجرا کنید و ببینید آیا هنوز نام جدول ZXY است یا به نام جدید تغییر کرده است.
همانطور که مشاهده می کنید، خطای invalid object در خروجی کوئری نشان داده شد و این نشان از تغییر نام موفقیت آمیز نام جدول دارد.
خب، حالا با نام جدید(XYZ) رکوردهای جدول را Select می کنیم.
حالا با استفاده از SP_RENAME قصد داریم نام یک ستون را در این جدول تغییر دهیم.
ستون Name از جدول XYZ را به EmpName تغییر خواهیم داد.
EXEC SP_RENAME 'dbo.XYZ.Name' , 'EmpName','COLUMN';
حالا اگر دوباره رکوردهایجدول را Select کنید، خواهید دید که ستون Name به نام مورد نظر تغییر کرده است.
حالا با استفاده از SP_RENAME، قصد تغییر نام index از این جدول را داریم. از آنجایی که هیچ ایندکسی نداریم، ایتدا یک ایندکس ایجاد می کنیم:
CREATE NONCLUSTERED INDEX idx_colEmpName
ON XYZ(EmpName)
همانطور که مشاهده می کنید، نام ایندکس idx_colEmpName می باشد و ما می خواهیم نام از idx_colEmpName به idx_EmpName تغییر دهیم.
EXEC SP_RENAME 'dbo.XYZ.idx_colEmpName', 'idx_EmpName', 'INDEX';
حالا با استفاده از Stored Procedure سیستمی SP_HELP، بررسی می کنیم که آیا نام index مورد نظرما با موفقیت تغییر کرده یا خیر:
Sp_Help XYZ
همانطور که مشاهده می کنید، تغییر نام ایندکس با موفقیت انجام شد.
دقت داشته باشید که تغییر هر مقداری از جدول، در Stored Procedure ها و View هایی که از آن جدول استفاده می کنند، اعمال نخواهد شد و باید در SP ها و View ها و غیره… تغییرات اعمال شود وگرنه با خطا مواجه خواهید شد.
نمایش دیدگاه ها (0 دیدگاه)
دیدگاه خود را ثبت کنید: