تغییر دادن نام ستون و مقدار آن به صورت پویا در Procedure
سلام دوستان:
من می خوام تا به صورت پویا Dynamic نام ستون مورد نظر در یک جدول رو در Procedure تغییر بدم و مقدار مورد نظرم رو جستجو کنم.
در Procedure مورد نظر مقدار نام جدول ، نام ستون و مقدار مورد نظر برای جستجو به عنوان ورودی Procedure وارد می شه اما در هنگام اجرا پیام خطا نمایش داده می شه که نام ستون به عنوان نام مقدار ورودی موجود نیست. یعنی اینکه مقدار مورد نظر برای جستجو رو به عنوان نام ستون قرار میده و عملیات با خطا روره رو میشه.
هدف من از نوشتن این Procedure اینه که دیگه نیاز نشه برای هر جدول چنین Procedure تکراری نوشته بشه و با یک دستور برای همه ی جداول استفاده بشه.
Drop Proc if exists production.IsExist;
go
Create Proc production.IsExist
@TableName nvarchar(255),
@ColumnName nvarchar(255),
@InputValue nvarchar(255)
With Encryption
As
Begin
SET NOCOUNT ON;
Declare
@P1 nvarchar(255),
@P2 nvarchar(255),
@P3 nvarchar(255),
@QueryString nvarchar(255)
Set @P1 = N'Select * from ';
Set @P2 = N' Where ';
Set @P3 = N' = ';
Set @QueryString = CONCAT(@P1, @TableName, @P2, @ColumnName, @P3, @InputValue);
Exec (@QueryString);
End
go
Exec production.IsExist N'Production.Manufacturers', N'ManufacturerName', N'BMW'
پیام خطا :
Msg 207, Level 16, State 1, Line 32
Invalid column name 'BMW'.
Completion time: 2023-01-29T11:27:11.6992411+03:30
با سپاس فراوان.
موفق باشید.
نقل قول: تغییر دادن نام ستون و مقدار آن به صورت پویا در Procedure
به نظرم @InputValue باید در گیومه باشد
نقل قول: تغییر دادن نام ستون و مقدار آن به صورت پویا در Procedure
سلام دوست من:
خیلی ممنون بابت راهنمایی خوب تون.
با گذاشتن N@InputValue' داخل گیومه "N'@InputValue'" در هنگام اجرای Procedure مشکل حل شد و الان باتغییر نام جدول و مقدار مورد نظر به عنوان کلید در جستجو نتیجه مورد نظر حاصل می شه.
موفق باشید.