سلام دوستان:
من می خوام تا به صورت پویا 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
با سپاس فراوان.
موفق باشید.