View Full Version : سوال: تبدیل پراسیجر داینامیک insertبه پراسیجر update
sozlar
یک شنبه 27 دی 1388, 11:46 صبح
با سلام
لطفا بفرمایید چگونه میتوانم پراسیجر داینامیک زیر را که جهت insert هست به پراسیجر داینامیک جهت update تبدیل کنم؟
فوریه لطفا کمک
تمام جدولها شامل 2 فیلد هستند
یکی بصورت اتونامبر و دیگری ورکر
ما میخواهیم نام جدول و فیلد ورکر را داینامیک کنیم یعنی نام جدول با کدنویسی انتخاب میشود حالا باید فیلد را هم بتوانیم ویرایش کنیم
همانطور هم که میبینید برای نام جدول مشکلی نیست
از اینجا به بعد رو نمیتونم
باتشکر
ALTER PROCEDURE InsertTable
(
@PrmTblName nvarchar(50),
@PrmFvalue nvarchar(50)
)
AS
DECLARE @InsertString nvarchar(100)
-- Build the INSERT statement.
SET @InsertString = 'INSERT INTO ' +
@PrmTblName +
' values (@Fvalue)'
EXEC sp_executesql @InsertString,
N'@Fvalue varchar(50)',
@PrmFvalue
Kamyar.Kimiyabeigi
یک شنبه 27 دی 1388, 14:03 عصر
ALTER PROCEDURE UpdateTable
(
@PrmTblName nvarchar(50),
@PrmFvalue nvarchar(50)
)
AS
DECLARE @InsertString nvarchar(100)
-- Build the INSERT statement.
SET @InsertString = 'UPDATE ' +
@PrmTblName +
' SET FldName = @Fvalue'
EXEC sp_executesql @InsertString,
N'@Fvalue varchar(50)',
@PrmFvalue
sozlar
یک شنبه 27 دی 1388, 14:44 عصر
ALTER PROCEDURE UpdateTable
(
@PrmTblName nvarchar(50),
@PrmFvalue nvarchar(50)
)
AS
DECLARE @InsertString nvarchar(100)
-- Build the INSERT statement.
SET @InsertString = 'UPDATE ' +
@PrmTblName +
' SET FldName = @Fvalue'
EXEC sp_executesql @InsertString,
N'@Fvalue varchar(50)',
@PrmFvalue
الان updateشما whereنداره
البته چند مدل شبیه به این رو هم امتحان کردم ولی نشد مثل کد زیر:
ALTER PROCEDURE UpdateTable
(
@PrmTblName nvarchar(50),
@PrmFcode int,
@PrmFvalue nvarchar(50)
)
AS
DECLARE @UpdateString nvarchar(100)
-- Build the UPDATE statement.
SET @UpdateString = 'UPDATE ' +
@PrmTblName +
'SET PrmFvalue=@PrmFvalue'+
+'WHERE PrmFcode=@PrmFcode'
EXEC sp_executesql @UpdateString,
N'@Fvalue varchar(50)',
@PrmFvalue
Kamyar.Kimiyabeigi
یک شنبه 27 دی 1388, 15:30 عصر
ببخشيد حق با شماست من اشتباه نوشتم تيكه صحيح شده رو دوباره ميذارم
SET @InsertString = 'UPDATE ' +
@PrmTblName +
' SET FldName = ' + @Fvalue +
' WHERE FldName = ' + @FldValue2
sozlar
سه شنبه 29 دی 1388, 08:31 صبح
با سلام به همه دوستان
یه استاد سی شارپ دارم که این مسئله رو حل کرد
جهت توضیح باید بگم که از این پراسیجر داینامیک میشه برای جدولهایی که 2 تا فیلد دارند استفاده کرد
برای این پراسیجر 5 متغیر داریم که یکی برای نام جدول هست 2 تا برای نام فیلدها و 2 تا برای مقدار فیلدها
براحتی میتوان با تعریف متغیر در برنامه از این پراسیجر استفاده کرد
امیدوارم مورد استفاده قرار بگیره:
ALTER PROCEDURE dbo.UpdateTable
(
@PrmTblName nvarchar(50),
@PrmFieldName nvarchar(50),
@PrmFieldCode nvarchar(50),
@PrmvalueCode int,
@PrmvalueName nvarchar(50)
)
AS
DECLARE @UpdateString nvarchar(100)
-- Build the UPDATE statement.
SET @UpdateString = 'Update ' +
@PrmTblName + ' set '+@PrmFieldName+'=@valueName where '+@PrmFieldCode+'=@codevalue'
EXEC sp_executesql @UpdateString,
N'@valueName varchar(50),@codevalue int',
@PrmvalueName,@prmvaluecode
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.